【问题标题】:Sed/Awk manipulation of a text文本的 Sed/Awk 操作
【发布时间】:2015-07-19 01:35:17
【问题描述】:

我需要更改文件的最后一列:

dir_/agra_2008_04_07_a  6   scd679  Voice of male
dir_/agra_2008_04_07_a  7   scd680  voice off
dir_/agra_2007_10_01_a  2   scd502  voice over
dir_/agra_2007_10_08_a  2   scd502  voice over

对这个别人:

dir_/agra_2008_04_07_a  6   scd679  Voice_of_male
dir_/agra_2008_04_07_a  7   scd680  voice_off
dir_/agra_2007_10_01_a  2   scd502  voice_over
dir_/agra_2007_10_08_a  2   scd502  voice_over

在最后一列添加下划线!任何人?谢谢!

【问题讨论】:

  • 你如何定义“最后一列”?它们是标签分隔的吗?你还尝试了什么?

标签: linux text replace awk sed


【解决方案1】:

一个简单的sed解决方案:

sed 's/ /_/8g' file

它用下划线替换空格,但忽略前 7 个单词,因此从第 8 个开始到结尾 (g)。如果您的输出在最后一列之前始终具有相同数量的空格,则此方法有效。

【讨论】:

    【解决方案2】:

    只要你有双倍空格作为字段分隔符,你就可以使用这个awk

    awk -F"  " '{gsub(/ /,"_",$NF)}1' OFS="  " file
    dir_/agra_2008_04_07_a  6   scd679  Voice_of_male
    dir_/agra_2008_04_07_a  7   scd680  voice_off
    dir_/agra_2007_10_01_a  2   scd502  voice_over
    dir_/agra_2007_10_08_a  2   scd502  voice_over
    

    它用_替换最后一个文件上的空格

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      • 2017-07-23
      • 1970-01-01
      • 2013-02-18
      • 1970-01-01
      相关资源
      最近更新 更多