2017-04-03 76 views
-1
x="qwerty" 
x=$(echo $x | tr [a-z] [A-Z]); 
echo $x 
QWERTY 

我想将它移植到awk中。
1另存为format.awk为什么不能将命令从bash移植到awk中?

#! /usr/bin/awk 
{ 
x=$(echo -n $0 | tr [a-z] [A-Z]) 
print $x 
} 

2的awk -f format.awk文件

awk: format.awk: line 3: syntax error at or near tr 

为什么,以及如何解决它?

很容易翻译整个文件与猫文件| tr [az] [AZ],还有很多其他的工作要做awk,所以有必要在awk中一行一行地翻译行,其他任务中省略。

+4

AWK是不是一个空壳,这是一种编程语言。你可以用awk做到这一点,但这不是awk的语法。如果你想让这个文本更高,使用'toupper()':'echo qwerty | awk'{print toupper($ 0)}''。 –

+0

顺便说一句,如果您使用Bash 4.0或更高版本,您可以:'echo $ {x ^^}'。 –

回答

2

不能调用tr这样的:

你可以做这样的事情:

awk '{print | "tr \"[a-z]\" \"[A-Z]\""}' file 

还是在awk更好的做到这一点完全:

awk '{line = toupper($0); print line}' file 
+1

偶'awk'{print toupper($ 0)}''文件 – RomanPerekhrest

+0

是的,我知道。我设置了一个变量,因为OP似乎更像'toupper' – anubhava

相关问题