【问题标题】:Replace strings in a certain column with awk用 awk 替换某列中的字符串
【发布时间】:2013-09-26 05:11:28
【问题描述】:

我正在尝试使用 awk、gsub 和反向引用替换第一列中的一串数字。

例如,我的输入文件是

1-00001 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001

我想要的输出是

1-00001-00 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001

我尝试了以下 unix 命令

 awk '{gsub("^1-\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)\([0-9]\)$","^1-\1\2\3\4\5-00$",$1); print}' input

输出是

^1-^A^B^C^D^E-00$ 1 1-00001
1-00001-01 1 1-00001
1-00001-02 1 1-00001

谁能告诉我我的命令有什么问题? 提前谢谢!

【问题讨论】:

    标签: awk gsub backreference


    【解决方案1】:

    我认为您需要使用 gensubfrom gnu awk 来获取反向引用。 但是,如果您确实告诉我们您想要什么,输入和输出,它可以以不同的方式完成。像这样:

    awk 'split($1,a,"-")!=3 {$1=$1 "-00"}1' file
    1-00001-00 1 1-00001
    1-00001-01 1 1-00001
    1-00001-02 1 1-00001
    

    【讨论】:

    • 这太棒了。谢谢!
    猜你喜欢
    • 2018-03-25
    • 1970-01-01
    • 2015-01-13
    • 2017-02-08
    • 1970-01-01
    • 2019-11-21
    • 2018-10-06
    • 2011-08-15
    • 1970-01-01
    相关资源
    最近更新 更多