nev*_*int 78 unix linux perl awk sed
我有多行以下数据:
foo
bar
qux
zuu
sdf
sdfasdf
Run Code Online (Sandbox Code Playgroud)
我想要做的是用一行和逗号分隔它们:
foo,bar,qux,zuu,sdf,sdfasdf
Run Code Online (Sandbox Code Playgroud)
什么是最好的unix单线程呢?
Gur*_*uru 135
使用粘贴命令:
paste -d, -s file
Run Code Online (Sandbox Code Playgroud)
小智 65
aaa
bbb
ccc
ddd
Run Code Online (Sandbox Code Playgroud)
cat file | xargs
Run Code Online (Sandbox Code Playgroud)
aaa bbb ccc ddd
Run Code Online (Sandbox Code Playgroud)
cat file | xargs | sed -e 's/ /,/g'
Run Code Online (Sandbox Code Playgroud)
aaa,bbb,ccc,ddd
Run Code Online (Sandbox Code Playgroud)
有很多方法可以实现.您使用的工具主要取决于您自己的偏好或经验.
使用tr命令:
tr '\n' ',' < somefile
Run Code Online (Sandbox Code Playgroud)
使用awk:
awk -F'\n' '{if(NR == 1) {printf $0} else {printf ","$0}}' somefile
Run Code Online (Sandbox Code Playgroud)
根据您的输入示例,此awk行有效.(不带尾随逗号)
awk -vRS="" -vOFS=',' '$1=$1' file
Run Code Online (Sandbox Code Playgroud)
测试:
kent$ echo "foo
bar
qux
zuu
sdf
sdfasdf"|awk -vRS="" -vOFS=',' '$1=$1'
foo,bar,qux,zuu,sdf,sdfasdf
Run Code Online (Sandbox Code Playgroud)
Perl单线:
perl -pe'chomp, s/$/,/ unless eof' file
Run Code Online (Sandbox Code Playgroud)
或者,如果你想更加神秘:
perl '-peeof||chomp&&s/$/,/' file
Run Code Online (Sandbox Code Playgroud)