我有一个像这样的文本文件:
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更好?
非常感谢您
答案 0 :(得分:0)
如果您想使用键值对方法,则可以尝试遵循。
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