我試圖以行格式將下面的輸出打印到csv文件。有人可以幫助我使用awk或bash嗎?以行格式打印輸出的命令
Server abc.com
osbits x64
ostype windows
我想打印輸出這樣並轉發到CSV格式
abc.com x64 windows
我試圖以行格式將下面的輸出打印到csv文件。有人可以幫助我使用awk或bash嗎?以行格式打印輸出的命令
Server abc.com
osbits x64
ostype windows
我想打印輸出這樣並轉發到CSV格式
abc.com x64 windows
與要設置輸出字段分隔符(OFS),以逗號awk中,然後打印第二,第四和第六個字段與您的示例相匹配。
對於多行輸入,你可以用sed加入之前的行awk的
[email protected]:~ $ cat servers.txt
Server abc.com
osbits x64
ostype windows
[email protected]:~ $ cat servers.txt | sed -e 'N;N;s/\n/ /g'
Server abc.com osbits x64 ostype windows
[email protected]:~ $ cat servers.txt | sed -e 'N;N;s/\n/ /g' | awk '{ OFS=","; print $2,$4,$6}'
abc.com,x64,windows
看看編輯過的問題。輸入不是一行。 – 2014-10-07 17:36:56
這是當我的迴應發佈:) – 2014-10-07 17:47:27
這工作,但我敢肯定有一個更地道的方式來做到這一點:
awk '{printf "%s%s", ((NR==1)?"":", "),$2}'
對於輸入
Server abc.com foo.com bar.com buz.org
osbits x64 x86 sparc ppc
ostype windows linux solaris mac
的awk腳本
{
for (i=1;i<=NF;++i)
a[i][NR] = $i;
}
END {
for (i=2;i<=length(a); ++i) {
str = a[i][1]
for (j=2; j<=length(a[i]); ++j)
str = str "," a[i][j]
print str
}
}
產生
abc.com,x64,windows
foo.com,x86,linux
bar.com,sparc,solaris
buz.org,ppc,mac
假設輸入文件,file.txt
,看起來是這樣的:
Server abc.com
osbits x64
ostype windows
以下所有的解決方案會產生這樣的輸出:
Server,abc.comosbits,x64ostype,windows
AWK
awk '{printf "%s,%s",$1,$2}END{print ""}' file.txt
的Perl
perl -000ane 'print join ",",@F,"\n"' file.txt
殼
while read a b ; do printf "%s,%s" "$a" "$b"; done < file.txt; echo
護理接受的答案嗎? – anonymous 2014-10-11 10:51:25