【问题标题】:Bash Replace value with string codeBash 用字符串代码替换值
【发布时间】:2012-06-26 18:57:55
【问题描述】:

我有两个文件是这样的:

file1(参考文件)
BBB;33
AAA;2
CCC;5

文件2
5;.;.;.
33;.;.;.

我想将文件 1 第一列中的对应字符串替换为 column1 文件 2 中的对应值,以便:

输出
CCC;.;.;.
BBB;.;.;.

希望这很清楚,

感谢您的建议。

【问题讨论】:

    标签: bash replace


    【解决方案1】:

    如果我理解正确并且文件中的顺序正确,

    $ cat file1
    BBB;33
    AAA;2
    CCC;5
    $ cat file2
    33;.;.;.
    2;.;.;.
    5;.;.;.
    $ paste file1 file2 | sed 's/\([0-9]\+\)\t\1;//'
    BBB;.;.;.
    AAA;.;.;.
    CCC;.;.;.
    

    > file3 添加到最后一个命令以将输出写入file3。那你就可以mv file3 file1了。

    【讨论】:

    • 实际上,不要> file1 添加到最后一个命令,因为这会在paste 有机会读取它之前覆盖file1
    • 谢谢。似乎或多或少地工作,但输出格式不正确。也许我应该提到这两个文件都是; 分隔的。
    • @g256 你可能应该有。如果您编辑问题以显示文件、格式​​,我将对我的答案进行相应的更改(如果您这样做,请不要忘记在此处 ping 我)。
    • @Lev Levitsky 对不起。我刚刚更改了问题的格式。
    • @g256 看起来你只需要在命令中添加一个;,请参阅编辑。
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 2012-08-09
    • 1970-01-01
    • 2017-07-03
    • 2015-03-17
    • 1970-01-01
    • 2014-09-07
    • 2017-01-13
    相关资源
    最近更新 更多