我有一個文本文件中的以下列表:使用SED或AWK到雙引號逗號分隔並連接列表
10.1.2.200
10.1.2.201
10.1.2.202
10.1.2.203
我想包住的「雙引號」,逗號分隔並加入值一弦。
這可以在sed或awk中完成嗎?
預期輸出:
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203","10.1.2.204"
我有一個文本文件中的以下列表:使用SED或AWK到雙引號逗號分隔並連接列表
10.1.2.200
10.1.2.201
10.1.2.202
10.1.2.203
我想包住的「雙引號」,逗號分隔並加入值一弦。
這可以在sed或awk中完成嗎?
預期輸出:
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203","10.1.2.204"
,最簡單的是這樣的(在僞代碼):
根據不同的語言,這是非常簡單的事:
隨着awk
:
$ awk 'BEGIN{OFS=","}{s=s ? s OFS "\"" $1 "\"" : "\"" $1 "\""} END{print s}' file
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
或者,少 '的行情牆' 來定義一個引號字符:
$ awk 'BEGIN{OFS=",";q="\""}{s=s ? s OFS q$1q : q$1q} END{print s}' file
With sed
:
$ sed -E 's/^(.*)$/"\1"/' file | sed -e ':a' -e 'N' -e '$!ba' -e 's/\n/,/g'
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
(用Perl和Ruby,具有join
功能,它是最簡單的元件推到堆棧中,然後加入這一點。)
的Perl:
$ perl -lne 'push @a, "\"$_\""; END{print join(",", @a)}' file
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
紅寶石:
$ ruby -ne 'BEGIN{@arr=[]}; @arr.push "\"#{$_.chomp}\""; END{puts @arr.join(",")}' file
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
awk -F'\n' -v RS="\0" -v OFS='","' -v q='"' '{NF--}$0=q$0q' file
應該爲給定的例子工作。
與GAWK測試:
kent$ cat f
10.1.2.200
10.1.2.201
10.1.2.202
10.1.2.203
kent$ awk -F'\n' -v RS="\0" -v OFS='","' -v q='"' '{NF--}$0=q$0q' f
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
這裏是另一種選擇
sed 's/.*/"&"/' file | paste -sd,
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"
$ awk '{o=o (NR>1?",":"") "\""$0"\""} END{print o}' file
"10.1.2.200","10.1.2.201","10.1.2.202","10.1.2.203"