AWK中的拉丁字符

AWK中的拉丁字符,awk,gawk,Awk,Gawk,我有一个关于AWK中拉丁字母-1的问题,例如ï(上面有两个点的I)(239)) 当我在AWK中创建的字符串中用I替换ï时(我用一替换两个点),它可以工作: A="Aïda" A=gensub("ï","i","g",A) 但当我这么做的时候 awk ' { $0=gensub("ï","i","g",$0) }' \ <(cat units.csv) awk' { $0=gensub(“ï”、“i”、“g”和$0) }' \ awk不会将更改写回原始文件(输入),您必

我有一个关于AWK中拉丁字母-1的问题,例如ï(上面有两个点的I)(239))

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

A="Aïda"
A=gensub("ï","i","g",A)
但当我这么做的时候

awk '
{
    $0=gensub("ï","i","g",$0)
}' \  
<(cat units.csv)
awk'
{
$0=gensub(“ï”、“i”、“g”和$0)
}' \  
  • awk不会将更改写回原始文件(输入),您必须输出到tmp文件,在awk脚本中,您没有输出任何内容

  • 不需要cat零件,只需
    awk'..”文件

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

  • 不需要cat零件,只需
    awk'..”文件

  • 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

除了最新的gawk(4.1)可以支持就地文件修改()@ZsoltBotykai thx以获取信息。我正在使用archlinux。刚刚检查过,4.1还没有在arch的回购协议中。。。。希望在新功能出现时尝试。谢谢。但是在GNUAWK4.0.1中,拉丁字符(239)并没有被x所取代。我用Gawk4.0.2进行了测试,但我认为401也应该起作用。您的终端设置问题?谢谢,我必须道歉。当我导出Excel电子表格时,显然我没有将其保存到utf-8。因此,文件中有239个,而不是303257个。但我还有一个问题。所以我有一个(错误的)字符串Aïda,其中第二个字节是239。如何在AWK中测试这一点,从字符串中提取一个或多个字节,并根据一个或多个数字进行测试?除了最新的gawk(4.1)支持就地文件修改()@ZsoltBotykai thx以获取信息。我正在使用archlinux。刚刚检查过,4.1还没有在arch的回购协议中。。。。希望在新功能出现时尝试。谢谢。但是在GNUAWK4.0.1中,拉丁字符(239)并没有被x所取代。我用Gawk4.0.2进行了测试,但我认为401也应该起作用。您的终端设置问题?谢谢,我必须道歉。当我导出Excel电子表格时,显然我没有将其保存到utf-8。因此,文件中有239个,而不是303257个。但我还有一个问题。所以我有一个(错误的)字符串Aïda,其中第二个字节是239。如何在AWK中测试这一点,从字符串中提取一个或多个字节,并根据一个或多个数字进行测试?