在Bash附加到同一行

前端之家收集整理的这篇文章主要介绍了在Bash附加到同一行前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
文件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

我想要所有条目在同一行.如何才能做到这一点?

您可以单独使用粘贴.

首先,将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选项的使用,请参阅便携式使用.

原文链接:https://www.f2er.com/bash/384093.html

猜你在找的Bash相关文章