Linux awk命令的别名-引号太多
这里可能缺少一些简单的东西,但我不是shell脚本专家 我有一个本地命令,它工作得很好Linux awk命令的别名-引号太多,linux,bash,shell,awk,Linux,Bash,Shell,Awk,这里可能缺少一些简单的东西,但我不是shell脚本专家 我有一个本地命令,它工作得很好 tail -f /path/to/file | awk ' /INFO/ {print "\033[32m" $0 "\033[39m"} /ERROR/ {print "\033[31m" $0 "\033[39m"} /WARNING/ {print "\033[33m" $0 "\033[39m"} ' 如果我ssh到我的盒子中并粘贴它,它会工作得很好。但是我似乎不能给它加别名,因为它已
tail -f /path/to/file | awk '
/INFO/ {print "\033[32m" $0 "\033[39m"}
/ERROR/ {print "\033[31m" $0 "\033[39m"}
/WARNING/ {print "\033[33m" $0 "\033[39m"}
'
如果我ssh到我的盒子中并粘贴它,它会工作得很好。但是我似乎不能给它加别名,因为它已经使用了这两种引号,所以alias='…'
不起作用。我还尝试将其变成一个函数:
function tailMyFile {
tail -f /path/to/file | awk '
/INFO/ {print "\033[32m" $0 "\033[39m"}
/ERROR/ {print "\033[31m" $0 "\033[39m"}
/WARNING/ {print "\033[33m" $0 "\033[39m"}';
}
这告诉我:
-bash:/INFO/:没有这样的文件或目录
尝试以下函数声明方式:
tailMyFile() {
tail -f /path/to/file | awk '
/INFO/ {print "\033[32m" $0 "\033[39m"}
/ERROR/ {print "\033[31m" $0 "\033[39m"}
/WARNING/ {print "\033[33m" $0 "\033[39m"}';
}
但是,似乎您的错误与函数的定义无关,而是与/INFO/目录是否正确显示有关,您能否
cd/INFO
没有任何问题?改进:将/path/to/file
更改为$1
,并将文件路径作为参数传递给函数(即tailMyFile/path/to/file
)。然后您可以对任何文件使用该函数,而不仅仅是一个文件。@Isaac在意外标记附近给了我一个语法错误
(“。我试着在它前面加上
函数”,但这给了我和我原来一样的错误。这里的代码段是一个完全有效的函数。如果你的shell不喜欢这样,那就有问题了。@EtanReisner我想我在那里的某个地方遇到了一个奇怪的小精灵。我试着从头开始为字符重新键入它,结果成功了,但粘贴了从另一个shell中输入使其无法工作,即使它们看起来完全相同。很好的捕获-谢谢。来自bash的错误意味着出于某种原因,它没有将/INFO/
视为单个引用的awk脚本。