[英]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.