Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/57.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在bash脚本中将文件的某些部分复制到另一个文件_Bash_File_Loops - Fatal编程技术网

如何在bash脚本中将文件的某些部分复制到另一个文件

如何在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

我正在尝试使用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 -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'
删除该行。