加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

在Bash附加到同一行

发布时间:2020-12-16 01:26:00 所属栏目:安全 来源:网络整理
导读:文件letters.csv包含: b,a,c, 文件numbers.csv包含: 32342513 我想把numbers.csv附加到letters.csv这样: b,32,34,25,13 我试过这个: sed -e :a -e '{N; s/n/,/g; ta}' numbers.csv letters.csv 但是,这会将附加的条目放在一个新行上: b,13 我想要所有
文件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选项的使用,请参阅便携式使用.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读