AWK-举例说明

AWK-举例说明,awk,system,Awk,System,我有一个文件1: 1 2 3 1 2 3 此命令打印: $ awk 'BEGIN{system("cat " 1)}' 1 2 3 我将文件名从“1”更改为“1” 我有一个文件一个: 1 2 3 1 2 3 现在,该命令不起作用: $ awk 'BEGIN{system("cat " one)}' | 为什么现在命令不起作用 感谢您的解释。在awk中,1的值为1,名为one的变量为空字符串。因此“cat”1是字符串cat 1,但是“cat”one是字符串cat。字符串“cat'

我有一个文件1

1
2
3
1
2
3
此命令打印:

$ awk 'BEGIN{system("cat " 1)}'
1
2
3

我将文件名从“1”更改为“1

我有一个文件一个

1
2
3
1
2
3
现在,该命令不起作用:

$ awk 'BEGIN{system("cat " one)}' 
|

为什么现在命令不起作用


感谢您的解释。

在awk中,
1
的值为
1
,名为
one
的变量为空字符串。因此
“cat”1
是字符串
cat 1
,但是
“cat”one
是字符串
cat
。字符串
“cat'\'''one'\'''
是字符串
cat'
,因此将空字符串作为第一个参数传递给cat

在awk中,
1
的值为
1
,名为
one
的变量为空字符串。因此
“cat”1
是字符串
cat 1
,但是
“cat”one
是字符串
cat
。字符串
“cat'\'''one'\'''
是字符串
cat'
,因此将空字符串作为第一个参数传递给cat

在您的示例中,awk将
1
解释为文字1,将
one
解释为没有值的变量。这意味着
system
正在尝试执行
cat{empty}
cat'

试试这个:

awk 'BEGIN{one = "one" ; system("cat " one)}'
或:


在您的示例中,awk将
1
解释为文字1,将
1
解释为没有值的变量。这意味着
system
正在尝试执行
cat{empty}
cat'

试试这个:

awk 'BEGIN{one = "one" ; system("cat " one)}'
或:


如果您的文件名是一个数字,您可以直接在system()中写入该数字,awk将在内部将其转换为字符串值。您甚至可以编写表达式来获得结果。例如:

系统(“cat”4-3)
也适用于您的“1”案例。要查看差异,您可以将文件命名为“1+1”,然后
系统(“cat”1+1)
将无法工作,它将抱怨文件“2”不存在


对于“one”示例:system()中的“one”与字符串“one”不同,而是一个名为“one”的变量。在awk中,如果未分配变量,则其默认值为空字符串

如果您的文件名是一个数字,您可以直接在system()中写入该数字,awk将在内部将其转换为字符串值。您甚至可以编写表达式来获得结果。例如:

系统(“cat”4-3)
也适用于您的“1”案例。要查看差异,您可以将文件命名为“1+1”,然后
系统(“cat”1+1)
将无法工作,它将抱怨文件“2”不存在


对于“one”示例:system()中的“one”与字符串“one”不同,而是一个名为“one”的变量。在awk中,如果未分配变量,则其默认值为空字符串

谢谢你的解释。谢谢你的解释。谢谢你的解释。谢谢你的解释。谢谢你的解释。谢谢你的解释。谢谢你的解释。