[英]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評估算術表達式。 r
已sed
讀取了命名的文件。
[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.