是否可以将管头输出用于sed?

时间:2018-07-26 11:33:47

标签: bash sed

输入文件

hello how are u
some what doing fine
so 
thats all
huh
thats great
cool
gotcha im fine

我想删除最后4行而不重新定向到另一个文件或说就地编辑。

我使用了head -n -3 input.txt,但它只删除了最后两行。

还想了解是否有可能将管道头的输出传输到sed

head -n -3 input.txt | sed ...

是的,我通过sed的选项删除了如下所示的最后n行,但由于无法理解命令的细微差别,因此继续使用head命令替代方法

sed -e :a -e '$d;N;2,5ba' -e 'P;D' file

1 个答案:

答案 0 :(得分:1)

编辑: ,而不创建临时文件解决方案:

awk -i inplace -v lines=$(wc -l < Input_file) 'FNR<=(lines-4)' Input_file

能否请您尝试以下操作,如果有帮助,请告诉我。

tac Input_file | tail -n +5 | tac  > temp_file && mv temp_file Input_file

解决方案第二: 使用awk

awk -v lines=$(wc -l < Input_file) 'FNR<=(lines-4)' Input_file > temp_file && mv temp_file Input_file