如何从linux上的文件中获取必填字段?

时间:2011-03-24 14:52:57

标签: linux shell unix

我有一个文件,其中包含由两个空格分隔的三个字段。我需要从文件中获取第三个字段。文件内容如下例所示:

kuldeep  Mirat  Shakti
balaji  salunke  pune
.
.
.

如何获得第三个字段?

5 个答案:

答案 0 :(得分:5)

要获得第3个字段,假设您没有任何“嵌入空格”,只需

awk '{print $3}' file

默认情况下,awk将空格设置为字段分隔符。因此,即使你有2个或更多的空格,第3个字段总是3美元。

但是,如果您想要具体,请指定字段分隔符

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

如果你有其他选择,那就是Ruby one

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

更新:如果您需要在第3天之后获取所有字段,

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

答案 1 :(得分:2)

使用awk

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

如果字段可能包含嵌入空格,这也适用。

答案 2 :(得分:0)

要获取每行的第三个字段,请通过awk,例如

cat filename | awk '{print $3}'

如果你只想获得第一行的第三个字段,也可以使用head:

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

答案 3 :(得分:0)

鉴于@ balaji对@ kurani回答的评论:

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

答案 4 :(得分:-2)

较少的文件名| cut -d“” - f 3