文件letters.csv包含:
b,a,c,
文件numbers.csv包含:
32 34 25 13
我想把numbers.csv附加到letters.csv这样:
b,32,34,25,13
我试过这个:
sed -e :a -e '{N; s/\n/,/g; ta}' numbers.csv >> letters.csv
但是,这会将附加的条目放在一个新行上:
b,13
我想要所有条目在同一行.如何才能做到这一点?
您可以单独使用粘贴.
原文链接:https://www.f2er.com/bash/384093.html首先,将numbers.csv中的内容转换为逗号分隔值. -s是串行选项,-d指定逗号作为分隔符:
$paste -sd,numbers.csv 32,13
然后通过指定一个空的分隔符和process substitution将这个输出附加到letters.csv:
$paste -d '' letters.csv <(paste -sd,numbers.csv) > tmp && mv tmp letters.csv $cat letters.csv b,13
要修改在OP中发布的sed命令,请使用command substitution:
$sed -i -e "s/$/$(sed -e :a -e '{N; s/\n/,/g; ta}' numbers.csv)/" letters.csv $cat letters.csv b,13
有关不同sed版本的-i选项的使用,请参阅便携式使用.