[英]sed insert line command OSX
我正在嘗試使用 sed 將文本插入文件的第三行,我在其他論壇上找到的語法是:
sed -i '' "3i\ text to insert" file
但是,當我使用它時,出現錯誤:
sed: 1: "3i\ text to insert": extra characters after \ at the end of i command
我似乎無法弄清楚是什么導致了問題。 我使用的是 OSX,這就是為什么我有一個空的 ' ' 作為我的擴展名。
謝謝!
您應該在\\
之后直接放置一個換行符:
sed '3i\
text to insert' file
這實際上是POSIX 規范定義的行為。 GNU sed 允許您指定要在同一行插入的文本這一事實是一個擴展。
如果出於某種原因您需要在 sed 命令周圍使用雙引號,那么您必須在第一行的末尾轉義反斜杠:
sed "3i\\
text to insert" file
這是因為雙引號字符串首先由 shell 處理,然后\\
后跟一個換行符被刪除:
$ echo "abc\
def"
abcdef
在 OSX 上,您可以使用:
sed -i.bak '3i\
text to insert
' file
以下是如何用一行語法做到這一點
sed -i '' -e "2s/^//p; 2s/^.*/text to insert/" file
重復第二行: 2s/^//p;
用您的文本替換新行: 2s/^.*/text to insert/
使用 ANSI-C 引用的 OSX 單行:
sed -i '' '3i\'$'\n''text to insert' file
這對我有用
sed -i '' '3i\
text to insert' file
如果要修改特定文件類型的文件(在我的情況下為 .sh),請使用此命令。
sed -i '.sh' '3i\
mymodified text to insert' temp.sh
確保在斜杠(“\\”)后有換行符
我發現我必須在要插入的行的末尾插入一個 \\ ,否則它會在原始行的開頭連接它。 所以,如果我想插入一個新的第三行,...
sed -i '' '3i\<br>
New line to be inserted.\<br>
' file
在 macOS 上使用 sed 將文本插入第一行並將其余部分放在新行上,這對我有用
sed -i '' '1 i \
Insert
' ~/Downloads/File-path.txt
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.