如何在bash脚本中将文件的某些部分复制到另一个文件
我正在尝试使用bash脚本进行后期处理。其中一个步骤是从文件某一行下面的行复制到另一个文件。例如,我的文件result.txt如下所示如何在bash脚本中将文件的某些部分复制到另一个文件,bash,file,loops,Bash,File,Loops,我正在尝试使用bash脚本进行后期处理。其中一个步骤是从文件某一行下面的行复制到另一个文件。例如,我的文件result.txt如下所示 6798 Atoms. Timestep: 0 1 -1.13977 -2.85824 -1.22655 1 -1.20925 -3.25439 -0.978641 1 -1.54565 -2.93301 -1.10555 1 -0.736167 -2.71201 -1.28063 1 -0.807178 -3.16856 -1.13489 1 -0.44354
6798
Atoms. Timestep: 0
1 -1.13977 -2.85824 -1.22655
1 -1.20925 -3.25439 -0.978641
1 -1.54565 -2.93301 -1.10555
1 -0.736167 -2.71201 -1.28063
1 -0.807178 -3.16856 -1.13489
1 -0.44354 -3.03183 -1.23103
1 -0.357782 -3.39866 -1.0277
1 -0.0431648 -3.05734 -1.23315
6798
Atoms. Timestep: 1
1 0.119814 -3.40483 -1.03653
1 0.382198 -3.03771 -1.23183
1 0.580509 -3.37434 -1.02215
1 0.818628 -3.00063 -1.21422
1 1.0244 -3.31469 -0.980957
1 1.27482 -2.97232 -1.15564
我只想要下面的部分。时间步:1。手动操作非常容易,但是,有成千上万个这样的文件,所以我想使用bash脚本来为我完成。我已经检查了谷歌的几种方法,但是,它们并不适合我的问题。如果你有这方面的经验,最好在下面公布你的结果。这可能会帮助像我这样有类似问题的人
提前谢谢你
最终解决方案
我的最终解决方案是如下所述,我得出一个结论
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -i '/Atoms. Timestep: 1/d' resultParsed.txt
sed-n'/Atoms。Timestep:1/,$p'resultParsed.txt
sed-i'/原子。Timestep:1/d'resultParsed.txt
第一行将获得包含原子和原子之后的内容。时间步长:1。第二行将删除您不需要的行。这将从result.txt复制,从第一个匹配到文件结尾,并保存在resultParsed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。Timestep:1/,$p'resultParsed.txt
这将从result.txt复制第一个匹配项和接下来的6个条目,并保存在resultpassed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。时间步长:1/,+6 p'resultpassed.txt
环境:GNU-sed版本4.1.5这将从result.txt复制,从第一次匹配到文件结束,并保存在resultParsed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。Timestep:1/,$p'resultParsed.txt
这将从result.txt复制第一个匹配项和接下来的6个条目,并保存在resultpassed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。时间步长:1/,+6 p'resultpassed.txt
环境:GNU-sed版本4.1.5这将从result.txt复制,从第一次匹配到文件结束,并保存在resultParsed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。Timestep:1/,$p'resultParsed.txt
这将从result.txt复制第一个匹配项和接下来的6个条目,并保存在resultpassed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。时间步长:1/,+6 p'resultpassed.txt
环境:GNU-sed版本4.1.5这将从result.txt复制,从第一次匹配到文件结束,并保存在resultParsed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。Timestep:1/,$p'resultParsed.txt
这将从result.txt复制第一个匹配项和接下来的6个条目,并保存在resultpassed.txt:
sed -n '/Atoms. Timestep: 1/, $ p' < result.txt > resultParsed.txt
sed -n '/Atoms. Timestep: 1/ , +6 p' < result.txt > resultParsed.txt
sed-n'/Atoms。时间步长:1/,+6 p'resultpassed.txt
环境:使用awk的GNU-sed版本4.1.5
awk 'x+=/Atoms\. Timestep: 1/' file >newfile
如果找到该字符串,则递增x,x大于零,这被视为true,awk的默认操作是打印。因此,包括这一行和之后的所有行都将使用awk打印。
awk 'x+=/Atoms\. Timestep: 1/' file >newfile
如果找到该字符串,则递增x,x大于零,这被视为true,awk的默认操作是打印。因此,包括这一行和之后的所有行都将使用awk打印。
awk 'x+=/Atoms\. Timestep: 1/' file >newfile
如果找到该字符串,则递增x,x大于零,这被视为true,awk的默认操作是打印。因此,包括这一行和之后的所有行都将使用awk打印。
awk 'x+=/Atoms\. Timestep: 1/' file >newfile
如果找到该字符串,则递增x,x大于零,这被视为true,awk的默认操作是打印。因此,包括这一行和之后的所有行都将被打印。因此来自
原子。Timestep:1
到文件末尾?类似于?@fedorqui谢谢你的提醒,我将在我的帖子中从Atoms更新我的最终解决方案。Timestep:1
到文件末尾?类似于?@fedorqui谢谢你的提醒,我将在我的帖子中从Atoms更新我的最终解决方案。Timestep:1
到文件末尾?类似于?@fedorqui谢谢你的提醒,我将在我的帖子中从Atoms更新我的最终解决方案。Timestep:1
到文件末尾?类似于?@fedorqui谢谢你的提醒,我会在我的帖子中更新我的最终解决方案。在这两种情况下,你都可以通过直接从文件中获取输入来避免无用地使用cat
:sed-n'/Atoms\。Timestep:1/,$p'resultParsed.txt
这个问题只针对Timestep 1行下面的部分提出,因此更好的选择是sed-e'1,/Timestep:1$/d'
删除该行。在这两种情况下,您都可以通过直接从文件sed-n'/Atoms\中获取输入来避免对cat
的无用使用。Timestep:1/,$p'resultParsed.txt
这个问题只针对Timestep 1行下面的部分提出,因此更好的选择是sed-e'1,/Timestep:1$/d'
删除该行。在这两种情况下,您都可以通过直接从文件sed-n'/Atoms\中获取输入来避免对cat
的无用使用。Timestep:1/,$p'resultParsed.txt
这个问题只针对Timestep 1行下面的部分提出,因此更好的选择是sed-e'1,/Timestep:1$/d'
删除该行。在这两种情况下,您都可以通过直接从文件sed-n'/Atoms\中获取输入来避免对cat
的无用使用。Timestep:1/,$p'resultParsed.txt
该问题仅针对Timestep 1行下方的部分提出,因此更好的选择是sed-e'1,/Timestep:1$/d'
删除该行。