unix - 在unix中使用AWK替换 "|"单独文件中4列的所有值

标签 unix awk

我有一个|分隔文件并希望替换第 2、4、6、7 列日期从 20200929 到 20201007。

文件:e.lst

1|20200929|mni|20200929|pqr|20200929|20200929
2|20200929|mni|20200929|abc|20200929|20200929
3|20200929|mni|20200929|lmn|20200929|20200929
4|20200929|mni|20200929|stu|20200929|20200929

我尝试的命令适用于 2 列。

awk -F\| '{OFS=FS}$2=20201007, $4=20201007 {print}' e.lst > ne.lst

但是当我向其中添加更多列时,相同的命令会出现语法错误。

awk -F\| '{OFS=FS}$2=20201007, $4=20201007, $6=20201007 {print}' e.lst > ne.lst
                                          ^syntax error

最佳答案

您可以使用此 awk 将相同的值分配给单个表达式中的多个列:

awk 'BEGIN {FS=OFS="|"} { $2=$4=$6=$7=20201007 } 1' e.lst > ne.lst

1|20201007|mni|20201007|pqr|20201007|20201007
2|20201007|mni|20201007|abc|20201007|20201007
3|20201007|mni|20201007|lmn|20201007|20201007
4|20201007|mni|20201007|stu|20201007|20201007

关于unix - 在unix中使用AWK替换 "|"单独文件中4列的所有值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64963111/

相关文章:

java - 无法写入 Java 中的文件

file - 如何按行号将大文件拆分成小文件

linux - 这两个命令有什么区别

linux - 列出所有文件并找到特定文件位置

awk 从特定列中的字符串开头删除字符

awk - 如何过滤掉./gradle项目:dependencies command?(版本3)的特定部分

git - 如何捕获 `git clone` 的完整输出?

bash - unix 对 2 个字段的数字顺序进行排序

linux - 从尾部匹配 awk 时增加变量

awk - 按出现次数对文件进行排序