早上好,
我经常有文件,我想grep + awk但有很多字段。
我对一个特别感兴趣(所以我想awk '{print $i}'
)但是我怎么能知道我的列的位置(即“我”这个),除了手动计算它?
有大约70个字段的文件,我会节省很多时间! :)
非常感谢,
[编辑]
根据Ian McGowan的建议,我将在文件标题中查找列号:
head -1 myFile | awk '{for (i=1; i<=NF; i++) printf("%3d=%s\n", i, $i); }' | grep -i <the_column_Im_looking_for>
谢谢大家,
Will1v
答案 0 :(得分:1)
我正在寻找样品,但是:
$ cat > file
this is
the sample
$ awk '{
for(i=1;i<=NF;i++)
if($i=="sample")
print NR,i
}' file
2 2
答案 1 :(得分:1)
我在尝试分析一些大文本分隔文件时一直这样做。
$head -4 myfile
4A 1 321 537 513.30
4B 0.00
8 592 846 905.66
9B2 39 887 658.77
通过循环遍历列/字段来转置或转动:
$awk '{ for (i=1; i<=NF; i++) printf("%4d %3d=%s\n", NR, i, $i); }' < myfile
1 1=4A
1 2=1
1 3=321
1 4=537
1 5=513.30
2 1=4B
2 2=0.00
3 1=8
3 2=592
3 3=846
3 4=905.66
4 1=9B2
4 2=39
4 3=887
4 4=658.77
你可以在printf的格式掩码中添加printf("row=%-4d col=%-3d:%s\n", NR, i, $i);
或其他任何内容,然后grep只查找你想要查找列的数据,或者如果你知道col = 44的列grep来获取第44栏。
答案 2 :(得分:1)
if(m == null || m.getPosition() == null)
会在每行打印一列,因此您可以执行此操作:
xargs -n1