AWK中的拉丁字符

时间:2013-05-14 19:58:16

标签: awk gawk

我对AWK中的Latin-1字符有疑问,例如ï(上面有两个点的我(239))。

当我在用AWK创建的字符串中替换ï(我将两个点替换为一个)时,它可以工作:

A="Aïda"
A=gensub("ï","i","g",A)

但是当我这样做时,

awk '
{
    $0=gensub("ï","i","g",$0)
}' \  
<(cat units.csv)

其中字符串“Aïda”位于文件units.csv中,ï未被替换,因此显然它不在AWK中。这是我不明白的。我也不知道怎么看AWK而不是ï。

谢谢,

Eric J.

1 个答案:

答案 0 :(得分:3)

  • awk不会将更改写回原始文件(输入),您必须输出到tmp文件,在awk脚本中,您没有输出任何内容

  • awk '..' file

  • 不需要猫部分 在这种情况下,
  • gensub不是必需的,gsub可能适合您的要求。但都工作正常

参见示例:

kent$  cat file
ï ï ï ï ï

kent$  awk '{$0=gensub("ï","x","g")}1' file  # (or awk '{print gensub("ï","x","g")}' file)
x x x x x

kent$  awk 'gsub("ï","x")' file                                                                                                                                             
x x x x x