使用 sed 用逗号替换每行中的最后一个空格,然后删除所有空格

Zoe*_* RW 8 command-line sed text-processing

我有一个两列空格分隔的 .txt 文件,但第一列有空格(这是错误)。我需要将它转换为 csv,但我不能只用逗号替换所有空格。

示例输入:

gi|118592783|ref|ZP_01550172.1|_biphenyl-2  3-diol_1    2-dioxygenase_[Stappia_aggregata_IAM_12614] 1
Run Code Online (Sandbox Code Playgroud)

期望的输出:

gi|118592783|ref|ZP_01550172.1|_biphenyl-23-diol_12-dioxygenase_[Stappia_aggregata_IAM_12614],1
Run Code Online (Sandbox Code Playgroud)

我如何使用sed(或其他任何东西)用逗号替换一行中的最后一个空格,然后删除所有剩余的空格?这会有效地创建一个 CSV 文件吗?

mur*_*uru 8

就像是:

sed -r 's/(.*) /\1,/; s/ //g'
Run Code Online (Sandbox Code Playgroud)

第一个替换是贪婪的,将覆盖组中除最后一个空间之外的所有空间,将最后一个替换为,。然后第二个将消除其余部分。

  • @muru IT、软件工程和工程规则#1:你不能把你的咖啡洒出来,而是把它喝完,一杯接一杯 (4认同)