我有一个包含以下列的文件:
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"