开发者

how to get requred field from file on linux?

I have one file which contains three fields separated by two spaces. I need to get开发者_开发知识库 only third field from file. File content is as in following example:

kuldeep  Mirat  Shakti
balaji  salunke  pune
.
.
.

How can I get the third field?


To get the 3rd field, assuming you don't have any "embedded spaces", just

awk '{print $3}' file

awk by default sets whitespaces as field delimiters. So even if you have 2 spaces or more, the 3rd field is always $3.

However, if you want to be specific, then specify a Field delimiter

awk -F"  " '{print $3}' file

If you have other choices, a Ruby one

ruby -F"  " -ane 'print $F[2]' file
ruby -ane 'print $F[2]' file

Update: If you need to get all fields after 3rd,

awk -F"  " '{$1=$2=$3=""}1' OFS="  " file # add a pipe to  `sed 's/^[ \t]*//'` if desired

ruby -F"  " -ane  'puts $F[3..-1].join("  ")' file


Use awk:

awk -F'  ' '{print $3}' file

This also works if fields may contain embedded spaces.


To get the third field of each line, pipe through awk, e.g

cat filename | awk '{print $3}'

If you just want to get the third field of the first line, use head, too:

cat filename | head -n 1 | awk '{print $3}'


Given @balaji's comment to @kurani's answer:

perl -pe 's/^.*?  .*?  //' filename
awk -F'  ' '{for(i=3; i<NF; i++) {printf("%s%s",$i,FS)}; print $NF}' filename


less filename | cut -d" " -f 3

0

上一篇:

下一篇:

精彩评论

暂无评论...
验证码 换一张
取 消

最新问答

问答排行榜