【问题标题】:Replace two characters with sed dynamically用 sed 动态替换两个字符
【发布时间】:2019-01-04 10:01:26
【问题描述】:

我有以下字符串

C:/data
D:/backups
C:/Users/Guest/old_data
F:/files/new

如何将前两个字符替换为/cygdrive/LOWERCASE_DRIVE_LETTER

结果

/cygdrive/c/data
/cygdrive/d/backups
/cygdrive/c/Users/Guest/old_data
/cygdrive/f/files/new

【问题讨论】:

  • 请始终尝试在您的帖子中添加您的努力。

标签: unix sed replace


【解决方案1】:
awk -F':' 'sub(/../,"/cygdrive/"tolower($1))' file

简要说明,

  • -F':':设置 ':' 为字段分隔符。
  • tolower($1):返回$1的小写
  • sub(/../,"/cygdrive/"tolower($1)):将前 2 个字符替换为 "/cygdrive/"tolower($1)

【讨论】:

    【解决方案2】:

    这可能对你有用(GNU sed):

    sed 's/\(.\):/\/cygdrive\/\l\1/' file
    

    记住将第一个字符和: 组合在一起。然后插入/cygdrive/并将组小写,即第一个字符。

    【讨论】:

      【解决方案3】:

      请您尝试关注一下。

      awk 'BEGIN{FS=OFS="/"}{sub(/:/,"",$1);$1=tolower($1);print "/cygdrive/" $0}' Input_file
      

      【讨论】:

        猜你喜欢
        • 2021-09-23
        • 1970-01-01
        • 2011-05-17
        • 2020-11-15
        • 1970-01-01
        • 1970-01-01
        • 2020-01-12
        • 2021-07-23
        • 1970-01-01
        相关资源
        最近更新 更多