2017-06-05 53 views
-1

我正在研究模擬化學反應並希望跟蹤原子運動。這個動議是用不同時間步長的大文件寫成的。我想在每個時間步中獲得原子ID(每個時間步中唯一)。但是,如何在使用grep時在輸出的前面添加索引號?

`grep -ni " 6557 " filename` 

的輸出具有不同的行號,這很難與時步相關聯。

1117:O型6557 0.000000 0.000000
5189:O型6557 0.000000 0.000000

21491:鐵6557 0.000000 0.000000

我怎麼能在前面加上索引號(NOT行號)使用grep命令時的輸出?象下面這樣:

1 O 6557 0.000000 0.000000

2 O 6557 0.000000 0.000000

3的Fe 6557 0.000000 0.000000

非常感謝。

回答

0

GNU貓可以這樣做:

grep " 6557 " filename | cat -n 

或者你可以用Perl手工進行:

perl -ne 'print ++$c, " ", $_ if/6557 /' filename 
+0

非常感謝。兩者都很好。 – Leon

0

我建議AWK解決方案:

awk '$0~/ 6557 /{ print ++c, $0}' filename 

如果你仍然要處理grep命令 - 與GNU結合起來nl命令(用於將文件的行數):

grep -i ' 6557 ' filename | nl -n ln 
+0

太謝謝你了。他們在工作。 – Leon