是否可以更改 awk 中的默认字段分隔符?

evs*_*ith 5 awk

我总是使用 awk 来操作逗号分隔的文件,因此我的代码中的第一行总是将字段分隔符更改为“,”,如下所示:

awk 'BEGIN {FS=","}
$2 < 20 {print $1}' myfile.csv
Run Code Online (Sandbox Code Playgroud)

是否可以更改 awk 的默认设置,使逗号成为默认FS?这不是一个大问题,但它只会让事情变得更整洁一些。我尝试谷歌搜索,但没有找到任何有用的东西;这可能是不可能的,但我想我会问!

Ouk*_*uki 5

要更改 awk 默认字段分隔符,请使用-F <fs>选项(fs简单字符或正则表达式)。

您还可以fs使用 awk 内部变量来更改它FS


Pet*_*r.O 1

编辑:一般来说,正如评论中强调的那样,使用别名的安全方法是使用不同的名称,例如awkc

创建一个别名,将字段分隔符设置为逗号。将别名放入~/.bashrc,或者如果~/.bashrc sources (includes) ~/.bash_aliases,则将其放在那里。随后您可以在命令中再次将其覆盖为您喜欢的任何内容,

请注意,如果您使用“awk”作为别名,则您的脚本完全不可移植。它只能在具有该特定别名的系统上正常运行。

alias awkc='awk -F","'
Run Code Online (Sandbox Code Playgroud)

示例(使用别名)

echo "a,b c" | awkc '{print $1" -- "$2}'  
Run Code Online (Sandbox Code Playgroud)

输出

a -- b c
Run Code Online (Sandbox Code Playgroud)

  • 像这样的别名是危险的。风险在于有一天你会问自己:但是为什么我的 awk 不使用空格进行分割呢? (2认同)