簡體   English   中英

如何在shell腳本中向文件添加一行?

[英]How can I add a line to a file in a shell script?

我想在現有的 CSV 文件中添加一行標題,就地編輯。 我該怎么做?

echo 'one, two, three' > testfile.csv

我想結束

column1, column2, column3
one,     two,     three

更改初始 CSV 輸出不在我的掌握之中。

任何標准命令都可以。 重要的是文件被編輯到位,並且在文件的開頭插入了該行。

要回答您的原始問題,請按以下方法使用 sed:

sed -i '1icolumn1, column2, column3' testfile.csv

"1i" 命令告訴 sed 轉到第 1 行並在那里插入文本。

-i 選項導致文件被“就地”編輯,並且還可以使用可選參數來創建備份文件,例如

sed -i~ '1icolumn1, column2, column3' testfile.csv

將原始文件保存在“testfile.csv~”中。

這會在文件開頭添加自定義文本:

echo 'your_custom_escaped_content' > temp_file.csv
cat testfile.csv >> temp_file.csv
mv temp_file.csv testfile.csv

這不使用 sed,但使用 >> 將附加到文件。 例如:

echo 'one, two, three' >> testfile.csv

編輯:要添加到文件,請嘗試以下操作:

echo "text"|cat - yourfile > /tmp/out && mv /tmp/out yourfile

我通過快速的谷歌搜索找到了這個。

據我了解,您希望將column1, column2, column3放在現有的one, two, three

我會使用ed代替sed ,因為sed寫入標准輸出而不是文件中。

命令:

printf '0a\ncolumn1, column2, column3\n.\nw\n' | ed testfile.csv

應該做的工作。

perl -i也值得一看。

sed 是基於行的,所以我不確定您為什么要使用 sed 來執行此操作。 范式更多的是一次處理一行(您也可以以編程方式找到 CSV 中的字段數並使用 awk 生成標題行)為什么不只是

echo "c1, c2, ... " >> file
cat testfile.csv >> file

?

使用 perl -i 命令,將第 1 行的開頭替換為您要插入的內容(.bk 將具有備份原始文件的效果):

perl -i.bk -pe 's/^/column1, column2, column3\n/ if($.==1)' testfile.csv  

用兩個命令在文件開頭添加給定的行:

cat <(echo "blablabla") input_file.txt > tmp_file.txt
mv tmp_file.txt input_file.txt

如何在文件中添加一行

sed -i -e "48r../../../../folder1/lines_to_add.txt" a.txt 

a.txt - 要更改的文件 48r 是 a.txt 的行號,有些行在lines_to_add.txt 文件中

../../../../scripts3_2d/lines_to_add.txt 

-i 更新 a.txt,在運行代碼之前嘗試不使用 -i,注意換行,

"keep a newline at the end of lines_to_add.txt"

暫無
暫無

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

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