如何在 Linux 中使用带有参数的 awk 别名?
How to use an alias of awk with a parameter in Linux?
我正在尝试创建 awk 的别名以从一行中剪掉重要的列。
例如:
$date | awk -F' ' '{print }'
Wed
但我想创建一个带有列数参数的 awk 别名,例如打印 $1、打印 $2 等。
我试着在互联网上搜索并找到了这个:
alias kaat="_kaat"
_kaat() {
awk -F ' ' '{print var}' var=""
}
但这仍然不起作用,没有给我任何输出。
var
将打印该变量的内容,而 $var
将打印基于 var
值的字段内容。您可以在 ()
中使用任何表达式,例如:$(var+1)
alias kaat="_kaat"
_kaat() {
awk -F ' ' '{print $var}' var=""
}
样本运行
$ echo 'foo baz 123' | kaat 2
baz
$ echo 'foo baz 123' | kaat 1
foo
您可以 simplify/improve 您的功能,如评论中所述:
kaat() {
awk -v var="" '{print $var}'
}
# single line version, note the ;
kaat() { awk -v var="" '{print $var}' ; }
您也可以在此处使用 cut
(注意:这并不完全等同,请参阅 awk field splitting summary)
$ alias k='cut -d" " -f'
$ echo 'foo baz 123' | k 1
foo
$ echo 'foo baz 123' | k 2
baz
我正在尝试创建 awk 的别名以从一行中剪掉重要的列。 例如:
$date | awk -F' ' '{print }'
Wed
但我想创建一个带有列数参数的 awk 别名,例如打印 $1、打印 $2 等。
我试着在互联网上搜索并找到了这个:
alias kaat="_kaat"
_kaat() {
awk -F ' ' '{print var}' var=""
}
但这仍然不起作用,没有给我任何输出。
var
将打印该变量的内容,而 $var
将打印基于 var
值的字段内容。您可以在 ()
中使用任何表达式,例如:$(var+1)
alias kaat="_kaat"
_kaat() {
awk -F ' ' '{print $var}' var=""
}
样本运行
$ echo 'foo baz 123' | kaat 2
baz
$ echo 'foo baz 123' | kaat 1
foo
您可以 simplify/improve 您的功能,如评论中所述:
kaat() {
awk -v var="" '{print $var}'
}
# single line version, note the ;
kaat() { awk -v var="" '{print $var}' ; }
您也可以在此处使用 cut
(注意:这并不完全等同,请参阅 awk field splitting summary)
$ alias k='cut -d" " -f'
$ echo 'foo baz 123' | k 1
foo
$ echo 'foo baz 123' | k 2
baz