【发布时间】:2013-08-11 17:22:14
【问题描述】:
我有一个分隔| 的文件,我需要在其中搜索第 3 列中的字符并将其替换为 null。我只需要替换第三个字段中出现字符的列。
file1.txt
xx|yy|xx|12
输出文件:
xx|yy||12
我通过这个实现了
awk 'BEGIN {FS=OFS="|" } $3 ~ /[[:alnum:]]/ { $3="" }1' file
但我面临的是,如果有任何列具有管道字符,应将其视为单列,则不应将其视为字段分隔符。
xx|yy|"xyz|xx"|AAA|12...
所以输出应该是这样的:
xx|yy|"xyz|xx"||12
所以考虑到 AAA 作为第 4 列,AAA 应该替换为 null。
【问题讨论】:
-
这个问题似乎跑题了,因为它属于Unix & Linux。
-
@Cole"Cole9"Johnson 你错了。 awk 编程是 Stack Overflow 上的完美话题,尽管如果你足够努力的话,当然可以写出离题的 awk 问题。