0

我有一个关于 AWK 中的 Latin-1 字符的问题,例如 ï (上面有两个点的 i (239))。

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

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

但当我这样做时,

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

其中字符串“Aïda”在文件 units.csv 中,ï 没有被替换,所以显然它不在 AWK 中。这是我不明白的。我也不知道如何看什么是 AWK 而不是 ï。

谢谢,

埃里克·J。

4

1 回答 1

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

  • 不只需要 cat 部分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
于 2013-05-14T20:10:01.430 回答