ubuntu终端中的AWK命令出错

时间:2015-08-01 10:27:55

标签: bash awk

我是linux和AWK的新手。我的主文件夹中有一个名为 testing.txt 的文件,我正在尝试使用此awk命令读取该文件:

**arjun@arjun-Aspire-4741:~$ awk ´{print $1}´ testing.txt¨**   

我将此作为输出

**¨awk: ´{print
awk: ^ invalid char '�' in expression
arjun@arjun-Aspire-4741:~$ ¨**

1 个答案:

答案 0 :(得分:1)

问题在于您使用了正向刻度而不是引号(在这种情况下,只有单引号是合适的):

awk '{print $1}' testing.txt

而不是

awk ´{print $1}´ testing.txt

在shell中,双引号"中的字符串可以包含具有特殊含义的表达式(例如反引号,变量),这些表达式将在作为完整shell命令的一部分处理字符串之前展开。单引号'中的字符串完全转义;换句话说,字符串是字面上传递的,没有任何解释。这就是为什么在编写awk脚本时应该使用单引号,因为awk变量解引用运算符$与shell中的相同。没有其他有效的字符串分隔字符*。

我最初认为你使用过反叛(感谢Andras Deak发现我的错误)。 反引号在shell中具有特殊含义(相当于在$(...)中包装内容):将此字符串作为命令执行,并计算其输出(stdout)。这是在执行主命令之前完成的。

所以,如果我这样做

cat `echo myfile`

这变成了

cat myfile

然后执行。

您可以在以下几个地方阅读有关shell行为的更多信息:

*忽略该空格在技术上也是字符串分隔符