按照我的理解,$1
是第一个字段。但奇怪的是,awk '$1=$1'
省略了额外的空格。
$ echo "$string"
foo foo bar bar
$ echo "$string" | awk '$1=$1'
foo foo bar bar
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
这是对先前问题的跟进。即使字段的间距不同,我也使用此语法来删除重复的行
awk '{$1=$1};!NF||!seen[$0]++' /tmp/fstab
Run Code Online (Sandbox Code Playgroud)
现在我想排除以#
. 所以我使用这个语法
awk '/^#/ || "'!'"'{$1=$1};!NF||!seen[$0]++' /tmp/fstab
-bash: !: event not found
Run Code Online (Sandbox Code Playgroud)
我的语法有什么问题?