创建一个文件,其中包含多行的行位置信息

创建一个文件,其中包含多行的行位置信息

我有一个包含以下列的文件:

GEOM_190_190  
GEOM_190_192  
GEOM_190_194  
GEOM_190_196  
...  

其长度约为3000行。

我想编写一个脚本来创建一个文件,其中包含写入这些名称的行。
就我而言,我已经:

for f in extra.csv
do
 print grep -n 'f' structure.xyz >> ex.csv
done

期望的输出:

2:GEOM_190_190  
10:GEOM_190_192  
18:GEOM_190_194

应该找到名称的文件structures.xyz大约有 100000 行,如下所示:

6  
GEOM_190_190  
C -0.8067180 0.0475439 1.5251484  
S 0.3116624 0.2691858 0.0786324  
C -1.7790900 0.0209031 -1.8054100  
S -0.5677430 -1.0588900 -0.9579280  
C 2.5277800 0.5632240 1.8126600  
S 1.2848000 1.6235700 0.9897200  
6  
GEOM_190_192  
...

多谢!

答案1

Grep(1) 可以做你想做的事,试试吧。

grep -Fnx -f extra.csv structure.xyz 

将输出重定向到文件

grep -Fnx -f extra.csv structure.xyz > ex.csv

如果您想查看输出并同时重定向到文件,请使用tee

grep -Fnx -f extra.csv structure.xyz | tee ex.csv

如果我正确理解你的问题,这应该会给你你想要的结果。

答案2

解决了!

file="extra.csv"
while IFS= read -r line
do
  echo "$line"
grep -n "$line" structures.xyz | cut -f1 -d: >> ex.csv
done <"$file"

相关内容