追加到 Bash 中的同一行

2024-01-03

文件 letter.csv 包含:

b,a,c,

文件numbers.csv包含:

32
34
25
13

我想将numbers.csv 附加到letters.csv,如下所示:

b,a,c,32,34,25,13

我已经尝试过这个:

sed -e :a -e '{N; s/\n/,/g; ta}' numbers.csv >> letters.csv

但是,这会将附加条目放在新行上:

b,a,c,
32,34,25,13

我希望所有条目都在同一行。如何才能做到这一点?


你可以这样做paste alone.

首先,将内容转换为numbers.csv为逗号分隔值。-s是串行选项,-d,指定逗号作为分隔符:

$ paste -sd, numbers.csv
32,34,25,13

然后将此输出附加到letters.csv通过指定空分隔符和流程替代 http://mywiki.wooledge.org/ProcessSubstitution:

$ # use -d'\0' for non-GNU version of paste
$ paste -d '' letters.csv <(paste -sd, numbers.csv) > tmp && mv tmp letters.csv
$ cat letters.csv
b,a,c,32,34,25,13


修改sed命令发布在OP中,使用命令替换 http://mywiki.wooledge.org/CommandSubstitution:

$ sed -i -e "s/$/$(sed -e :a -e '{N; s/\n/,/g; ta}' numbers.csv)/" letters.csv
$ cat letters.csv
b,a,c,32,34,25,13
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

追加到 Bash 中的同一行 的相关文章

随机推荐