首页 > 解决方案 > awk 更改 shell 变量

问题描述

我想在 awk 中修改几个 shell 变量:
echo "$LINE_IN" | awk '/pattern1/ {print $0; WRITTEN=1; REC=$REC+1}' >> $FILE1

我试图把eval,但仍然不起作用:

eval $( echo "$LINE_IN" | awk '/pattern1/ {print $0; WRITTEN=1; REC=$REC+1}' >> $FILE1 )

有什么建议吗?我想用k-shell脚本,谢谢!

标签: unixawk

解决方案


完成后计算点击数:

echo "${LINE_IN}" | grep -E 'pattern1' > "${FILE1}"
REC=$(wc -l < "${FILE1}")
if (( REC > 0 )); then 
   WRITTEN=1
fi

当你真的想使用awk时,你必须让 awk 将结果写入 stdout 并解析 stdout:

echo "${LINE_IN}" | awk '/echo/ {print $0 > "x3"; WRITTEN=1; REC++}
                         END { print "WRITTEN=" WRITTEN; print "REC=" REC}'
WRITTEN=1
REC=6

当您想要真正设置变量时,将其包装起来:

source (echo "${LINE_IN}" | awk '/echo/ {print $0 > "x3"; WRITTEN=1; REC++}
                         END { print "WRITTEN=" WRITTEN; print "REC=" REC}')

注意:习惯使用小写变量名,如written,filerec.


推荐阅读