在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选项的使用,请参阅便携式使用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |