假设我想从一个文件中剪切多行(例如,行 1-500、1029-1729 和 2696-3446),将值附加到另一个文件(output.txt)的末尾,并从第一个文件中删除这些值。源文件有 9277 行,我想剪切其中一些行,从原始文件中删除它们并将它们粘贴到另一个文件中。可以通过命令行实现吗?
答案1
使用 sed,您可以将一组行写入不同的文件,同时从当前文件中删除它,如下所示:
sed -i -e 'N, M { w output.txt
d }' input.txt
其中N
和M
是行号。-i
选项sed
保存对源文件的更改,此处d
命令删除这些行。同时,w output.txt
导致所选行写入output.txt
。是的,这是两个单独的行:sed
要求w
命令的文件名是直到换行。
因此你可以做类似的事情:
cmd=' { w output.txt
d }'
sed -i -e "1,500 $cmd" -e "1029,1729 $cmd" -e "2696,3446 $cmd" input.txt
答案2
可能的 !
将行复制到
dest.file
重定向到grep 'pattern' src.file >> dest.file
删除
src.file
行sed -i '/pattern/d' src.file