【问题标题】:Replace multiple given string with others用其他字符串替换多个给定字符串
【发布时间】:2020-01-08 17:45:19
【问题描述】:

我有一个这样的文本文件:

Stone, John
Priya, Ponnappa
Wong, Natalie
Stanbrige, Natalie
Lee-Walsh, Natalie
Li, Natalie
Ithya, Ruveni
French, Tamzyn
Simoes, Salome
Virtue, Jackie
Campbell-Gillies,Jackie
Anderson, John
Kazantzis, John
Blair, Ruveni
Meldrum, Jackie
Smith, Maureen 
Burch, Ruveni
Harry, Verona
Andrews, Ruveni
Ellawala, Ruveni

我可以用 sed 做到这一点,但我觉得它不漂亮:

  sed 's/Ruveni/Ahmed/g' | sed 's/Verona/Sandro/g' | sed 's/Natalie/Chloé/g' | sed 's/John/Holly/g' | sed 's/Jackie/Melissa/g'

这将通过替换名称来完成工作,是否有更干净的方法可以使用 sed 或使用 awk 更好?

非常感谢

【问题讨论】:

标签: linux shell unix awk sed


【解决方案1】:

如果您想使用键值对方法,则可以尝试以下方法。

awk '
BEGIN{
  FS=OFS=", "
  array["Ruveni"]="Ahmed"
  array["Verona"]="Sandro"
  array["Natalie"]="Chlo"
  array["John"]="Holly"
  array["Jackie"]="Melissa"
}
{
  for(i=1;i<=NF;i++){
    $i=$i in array?array[$i]:$i
  }
}
1
' Input_file

或者为什么不简单地将所有sed 替换与; 分开,如下所示:

sed '
s/Ruveni/Ahmed/g;
s/Verona/Sandro/g;
s/Natalie/Chlo/g;
s/John/Holly/g;
s/Jackie/Melissa/g;
' Input_file

【讨论】:

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