簡體   English   中英

使用SED修改文件的第n行

[英]Using SED to modify the nth line of a file

如果要在文件的第10行添加內容,該怎么做?

這是我想出的:

sed -ie '' "10s/^/new_content/g" file.txt

我不斷收到消息“沒有這樣的文件或目錄”

另外,如果我想用N + 1替換10並用變量$ VAR替換new_content,格式是否仍將相同?

VAR= $(cat fileA.txt)
sed -ie '' "`expr $N +1`s/^/$VAR/g" fileB.txt

謝謝你的幫助!!!

殼牌對間距很挑剔:

VAR= $(cat fileA.txt)

您不需要=后的空格。 實際上,除非fileA.txt只有一行,否則您也不需要分配。 為了使它能夠正常工作,您必須使用反斜杠等使轉義符轉義,這既困難又不必要。

除非您使用的是古董(非POSIX)外殼,否則請使用內置算法:

sed -i.bak -e "$(($N + 1))r fileA.txt" fileB.txt

$(($N + 1))使shell評估算術表達式。 rsed讀取了命名的文件。

[1addr]r file
在下一次嘗試讀取輸入行之前,立即將文件內容復制到標准輸出。 如果由於某種原因無法讀取文件,它將被靜默忽略,並且不會設置任何錯誤條件。

事實證明,我需要拆分-i-e

起作用的最終結果是:

        sed -i '' -e "10s/^/CONTENT/g" file.txt

或者在每次循環時將ns增加+1:

        sed -i '' -e "$((N + 1))s/^/CONTENT/g" ~/dance/heatlist/prep.txt

我仍然沒有弄清楚如何使CONTENT成為變量$ CONTENT

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM