【问题标题】:Replace with sed on csv file [closed]在 csv 文件上替换为 sed [关闭]
【发布时间】:2021-07-21 01:26:56
【问题描述】:

我有一个 csv 文件,我正在尝试用最后一个字母替换一个单词... 输入是

1111;AAA;...(更多列);A1a;A

2222;XXX;...(更多列);T3g;B

...(更多行)

...(更多行)

4564;AdA;...(更多列);G1a;A

33321;B1X; ...(更多列);T3g;B

我想用 A 代替“鳄梨”,用 B 代替“香蕉”...

我试过了

#sed -e "s/;A$/;C/g" file.csv 但是没有用,请问有什么建议吗?

【问题讨论】:

  • 抱歉,我认为您需要重新措辞;从您的描述中完全不清楚您要达到的目标。 sed 命令看起来像您试图用C 替换行尾的每个A

标签: linux csv sed


【解决方案1】:

这似乎有效:

sed -i 's/A$/Avocado$/g' file.csv
sed -i 's/B$/Banana$/g' file.csv

-i 替换文本,Regex 不需要 ;因为它应该只使用一个字符,对吧?因此,可以只指定该字符并将其替换为整个单词。

【讨论】:

  • 非常感谢!成功了!
【解决方案2】:

以下是您想要实现的目标吗?

tink@host:~/tmp$ sed 's/A$/Avocado/;s/B$/Banana/' file.csv
1111;AAA;... (more columns);A1a;Avocado
2222;XXX;... (more columns);T3g;Banana
... (more rows)
...(more rows)
4564;AdA;... (more columns);G1a;Avocado
33321;B1X; ... (more columns);T3g;Banana

如果这看起来正确,并且您想更改文件,请将-i 添加到 sed。 如果您想要一个新文件,请在行尾添加 > new_file

【讨论】:

    猜你喜欢
    • 2013-12-23
    • 2019-02-11
    • 2013-06-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-07
    • 2020-12-25
    • 1970-01-01
    相关资源
    最近更新 更多