动态用sed替换两个字符

时间:2018-07-27 09:46:00

标签: unix sed replace

我有以下字符串

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

3 个答案:

答案 0 :(得分:4)

awk -F':' 'sub(/../,"/cygdrive/"tolower($1))' file

简要说明,

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

答案 1 :(得分:2)

请您尝试以下。

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

答案 2 :(得分:2)

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

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

通过将第一个字符后跟:分组来记住。然后插入/cygdrive/并小写该组,即第一个字符。