【发布时间】:2014-02-14 23:58:36
【问题描述】:
详情:
输入文件:file.txt
P123456789,COLUMN2
P123456790,COLUMN2
P123456791,COLUMN2
预期输出:
Z678999999,COLUMN2
Z678999995,COLUMN2
Z678999996,COLUMN2
如果我尝试使用变量,它会给出正确的结果。
(i.e) /tmp>echo "P123456789"|tr "0-9" "5-9"|tr "A-Z" "X-Z"
Z678999999
但是如果我使用 awk 命令,它不会给出结果而是给出错误:
/tmp>$ awk 'BEGIN { FS=OFS="," } { $1=echo $1|tr "0-9" "5-9"|tr "A-Z" "X-Z";$2="COLUMN2"); print }' /tmp/file.txt >/tmp/file.txt.tmp
awk: BEGIN { FS=OFS="," } { $1=echo $1|tr "0-9" "5-9"|tr "A-Z" "X-Z";$2="COLUMN2"); print }
awk: ^ syntax error
awk: BEGIN { FS=OFS="," } { $1=echo $1|tr "0-9" "5-9"|tr "A-Z" "X-Z";$2="COLUMN2"); print }
awk: ^ syntax error
awk: BEGIN { FS=OFS="," } { $1=echo $1|tr "0-9" "5-9"|tr "A-Z" "X-Z";$2="COLUMN2"); print }
awk: ^ syntax error
有人可以帮忙吗?
【问题讨论】:
-
awk 不是外壳,就像 C 不是外壳一样。你不能从 awk 程序调用 shell 命令,就像你不能从 C 程序调用它一样。
-
查看此链接:calling-an-executable-program-using-awk。您也可以查找
getline的答案(参见 Kent 的答案),或者学习足够的 awk 来完全操作 awk 中的数据。
标签: awk