2017-09-26 58 views
1

如何添加在file.txt的第三行:使用Linux在特定位置添加一行並輸出到同一文件?

   line 1 
      line 2 
      line 4 

的sed可以用sed '3iline 3' file.txt做的,但我要輸出到同一個文件。 我試過sed '3iline 3' file.txt >> file.txt沒有用。它沒有添加行,但它複製file.txt的,我得到這個:

 line 1 
     line 2 
     line 4 
     line 1 
     line 2 
     line 3 
     line 4 
+0

只有'sed'(GNU sed和BSD sed AFAIK)的某些實現支持'-i'開關進行「in-place」編輯。 –

+0

如果你覺得自己很勇敢,你也可以在'Bash'中使用鑽石''''運算符:http://backreference.org/2011/01/29/in-place-editing-of-files/。另請參閱此答案:https://stackoverflow.com/a/39143992/3691891 –

回答

2

做到這一點的唯一方法是寫入到第二個文件,然後替換原來的。您只能將附加到到任意文件;你不能插入到一箇中間。

t=$(mktemp) 
sed '3iline 3' file.txt > "$t" && mv "$t" file.txt 

如果你的的sed版本支持它,你可以使用-i選項來自動臨時文件的處理。

sed -i '3iline 3' file.txt # GNU 
sed -i "" '3iline 3 ' file.txt # BSD sed requires an argument for -i 
相關問題