我正在研究模拟化学反应并希望跟踪原子运动。这个动作写在一个具有不同时间步长的大文件中。我想在每个时间步中获得原子ID(每个时间步长都是唯一的)。但是,输出
`grep -ni " 6557 " filename`
具有不同的行号,很难与时间步长相关联。
1117:O 6557 0.000000 0.000000
5189:O 6557 0.000000 0.00000021491:Fe 6557 0.000000 0.000000
使用grep命令时,如何在输出前添加索引号(NOT行号)?如下所示:
1 O 6557 0.000000 0.000000
2 O 6557 0.000000 0.000000
3 Fe 6557 0.000000 0.000000
非常感谢。
答案 0 :(得分:1)
我建议 awk 解决方案:
awk '$0~/ 6557 /{ print ++c, $0}' filename
如果您仍想处理grep
命令 - 将其与GNU nl
命令(用于对文件行进行编号)组合:
grep -i ' 6557 ' filename | nl -n ln
答案 1 :(得分:1)
GNU cat可以这样做:
grep " 6557 " filename | cat -n
或者你可以用perl手动完成:
perl -ne 'print ++$c, " ", $_ if / 6557 /' filename
答案 2 :(得分:0)
我发现通过以下方式将awk
与grep
一起使用可以使数字输出的位置更好,并且可读性强:
$ grep fruit list.txt
fruit:apples
fruit:oranges
fruit:bananas
fruit:lemons
$ grep fruit list.txt | awk '{print NR, $0}'
1 fruit:apples
2 fruit:oranges
3 fruit:bananas
4 fruit:lemons