如何在awk system()命令字符串中插入选项卡

时间:2016-12-24 13:22:57

标签: shell awk

标题就是我想要的。我试过了:

awk 'BEGIN {system("echo a\tb")}'
awk 'BEGIN {system("echo a  b")}'   # embedded tab

他们都输出了[空格] b'而不是' [tab] b'。

3 个答案:

答案 0 :(得分:4)

两个命令都使用echoa这两个参数调用b;这两个参数用TAB分隔,但是,就像在任何常规shell中一样,命令看不到分隔参数的空间。

您必须做的是使用一个参数调用echo:字符串"a<tab>b"

awk 'BEGIN {system("echo \"a\tb\"")}'

答案 1 :(得分:0)

你需要shell引用它:

awk 'BEGIN {system("echo \47a\tb\47")}'

答案 2 :(得分:0)

@pdg:请尝试关注:

awk -vs1="\"" 'BEGIN{system("echo " s1 "a\tb" s1)}'

其中s1是awk的变量,我们不需要在系统命令中使用转义序列。这里我们在s1变量中转义字符串(“),然后简单地在系统内打印所有变量(awk的函数)。