bash - awk 在使用三个 && 条件保存文件时更改字段分隔符

标签 bash shell awk putty

我有一个非常具体的 awk 问题:

在这个命令中,输出是一个带有“;”的普通文件字段分隔符。

awk -F\: '{ FS = ";";}{ if($1>=11414836 && $1<=11500000) print $0;}' /file.txt>/newfile.txt

现在,我需要添加第三个条件:

awk -F\: '{ FS = ";";}{ if($1>=11414836 && $1<=11500000 && $14=3294) print $0;}' /file.txt>/newfile.txt

问题在于第三个条件导致输出中的字段分隔符变为普通空格 ("")。

我做错了什么?

最佳答案

问题是双重的(都在评论中说明):

  1. 您使用 $14=3294而不是 $14==3294 .这设置了 $143294 的值,而不是比较它。
  2. 当任何字段发生更改(无意中发生)时,awk重新计算 $0 , 并插入 OFS字段之间。

关于bash - awk 在使用三个 && 条件保存文件时更改字段分隔符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34791036/

相关文章:

bash - 如何限制 bash 脚本中运行的命令数量?

linux - 使用 shell 脚本进行内务管理报告

Python 无法正确运行 shell 命令

sed - 单行删除特定字符出现次数超过 x 次的行

c# - 从 Mono C# 运行 Bash 命令

sql - 使用存储在文件中的 (Postgres) sql select 语句的 bash 文件创建表

mysql - 在 shell 脚本中执行 mysql 查询

awk - 使用 awk (gawk) 进行数字排序

regex - 匹配上一次匹配之前的最后一次出现

bash - 多次运行的平均运行时间