Awk 将脚本粘贴到带有缩进的命令行

Awk 将脚本粘贴到带有缩进的命令行,awk,indentation,Awk,Indentation,当我尝试将脚本的一部分复制并粘贴到命令行时,我会得到一堆文件名和目录以及实际代码。例如,如果我复制并粘贴一些非常简单的内容,如: awk '{ if ($4=="YES") print $0 }' file 我得到的东西有: .java/ .history .pip/ .bash_history 打印在命令行上。这与脚本中的缩进有关,因为如果我复制并粘贴脚本,如下所示: awk '{ if ($4=="YES") print $0 }' 我没有

当我尝试将脚本的一部分复制并粘贴到命令行时,我会得到一堆文件名和目录以及实际代码。例如,如果我复制并粘贴一些非常简单的内容,如:

awk '{
         if ($4=="YES")

         print $0

}' file
我得到的东西有:

.java/ .history .pip/ .bash_history
打印在命令行上。这与脚本中的缩进有关,因为如果我复制并粘贴脚本,如下所示:

awk '{

if ($4=="YES")

print $0

}'
我没有在命令行上粘贴不需要的项目

有人经历过吗?我不确定是否有一种特殊的方法可以正确缩进代码,但我没有遵循


感谢您的帮助。谢谢。

< P>当你在代码< BASH < /C>提示符下按Tab两次,它将显示一个可能的文件名完成列表,即使是多行单引号字符串的中间是<代码> > /代码>提示符。当您告诉终端仿真器粘贴文本时,它会输入每个字符,就像您键入它一样,因此您应该期望得到相同的结果

如果awk脚本非常复杂,可以从缩进中获益,那么应该将其放入文件中,然后使用
-f
选项从文件中运行它


awk-f filename

问题在于,用于缩进的嵌入式选项卡被视为选项卡完成尝试。不使用制表符进行缩进将防止该问题的发生。这是您的shell的一个问题,它与awk完全无关。话虽如此,关于一个完全不同的主题:您的awk脚本可以/应该简化为
awk'$4==“YES””文件
——您编写的所有其他代码都是无关的,只是复制了默认行为。