Shell-Script
改變文本文件的模式
文本文件的內容類似於
chair table pen desk
現在我希望它被更改並儲存在一個變數
var
中,如下所示(‘椅子’,‘椅子’),(‘桌子’,‘桌子’),(‘筆’,‘筆’),(‘桌子’,‘桌子’)
可能嗎?
編輯 Jofel 的分析器給出了以下錯誤
$ sed ':a;N;$!ba;s/\n/,/g;s/\w*/(''&'',''&'')/g' -i csclm.txt sed: The label :a;N;$!ba;s/\n/,/g;s/\w*/(&,&)/g is greater than eight characters.
我在用 :
$ uname -a HP-UX rcihp145 B.11.23 U 9000/800 3683851961 unlimited-user license
一種使用方式
sed
:script.sed的內容:
## Change line. s/.*/('&','&')/ ## Append it to hold space. H ## In end of file substitute newlines with commas and print. $ { g s/^\n// s/\n/,/g p }
命令:
sed -nf script.sed infile
輸出:
('chair','chair'),('table','table'),('pen','pen'),('desk','desk')
不需要子程序,可以在純 bash shell 中完成:
var=$(while read line; do echo -n ",('$line','$line')"; done < file) var=${var:1}
更新:
如果你想把它作為一個單線,你可以:
var=$({ read line && echo -n "('$line','$line')" && while read line; do echo -n ",('$line','$line')"; done } < file)
注意
&&
要執行echo
,while
只有它文件是非空的。