问题描述
letters.csv 文件包含:
The file letters.csv contains:
b,a,c,
文件 numbers.csv 包含:
The file numbers.csv contains:
32
34
25
13
我想像这样将 numbers.csv 附加到 letters.csv:
I would like to append numbers.csv to letters.csv like this:
b,a,c,32,34,25,13
我已经试过了:
sed -e :a -e '{N; s/\n/,/g; ta}' numbers.csv >> letters.csv
然而,这会将附加的条目放在一个新行上:
However, this puts the appended entries on a new line:
b,a,c,
32,34,25,13
我希望所有条目都在同一行上.这怎么办?
I would like all entries on the same line. How can this be done?
推荐答案
您可以单独使用 paste
.
首先,将numbers.csv
中的内容转换为逗号分隔的值.-s
是串行选项,-d,
指定逗号作为分隔符:
First, convert contents in numbers.csv
to comma-separated values. -s
is the serial option and -d,
specifies comma as delimiter:
$ paste -sd, numbers.csv
32,34,25,13
然后通过指定空分隔符和 进程替换,将此输出附加到 letters.csv
:
Then append this output to letters.csv
by specifying an empty delimiter and process substitution:
$ # 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
要修改 OP 中发布的 sed
命令,请使用 命令替换:
$ 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
这篇关于在 Bash 中追加到同一行的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!