如何在unix中修改分隔符文本文件中的值



我有一个巨大的文件,其分隔值为"~"示例

abc~poi~123~jijda~123~abc

要求将第三次出现时的值(在我们的情况下为123(替换为111。

我使用了以下命令

awk-F'~'-v OFS='~''$3=="123〃;{$3="111"}1'file.txt>Newfile.txt

这适用于手动创建的文件,但当它使用utf-8编码创建文件时,它不起作用。有人能帮上忙吗。谢谢

UTF-8应该没有问题。

# SO71048003.awk
BEGIN {
FS = OFS = "~"
out = "Newfile.txt"
}
{
if ($3 == "123")
$3 = "111"
print $0 > out
}

呼叫:

awk -f SO71048003.awk file.txt
=> Newfile.txt with content:
abc~poi~111~jijda~123~abc

您的awk代码有一些更改:

awk -F'~' -v OFS='~' '{$3=111} 1' file
abc~poi~111~jijda~123~abc
  • 我们将111的值分配给$3

最新更新