我知道在下面的代码中,管道命令会将输出传递给下一个命令。但我对 awk 执行的情况有疑问。我的疑问是每个 awk 块是否将遍历文件中的所有行,或者它将逐行遍历该行。更清楚,正如我假设的那样......
1) 第一个 awk 块将遍历第一行。
2)如果条件满足,则打印该行。(将其传递给下一个 awk 块)
3)否则什么都不做
4) 下一个 awk 块接收此输出并处理该特定行。
5)将其写入文件receipt.tmp
以这种方式处理或
1) 第一个 awk 块将遍历该文件中的所有行。
2) 将输出传递到下一个 awk 块
3) 下一个 awk 块将对输出通过的第一个 awk 块进行操作。
请帮我。我没有选择运行这个命令。提前致谢!
cat > /tmp/pay.dat
grep -v '^TRAILER' /tmp/pay.dat
| \
awk '{
if ((substr($0,145,2) != "CA")
{
print $0
}
}'
|\
awk 'BEGIN{OFS=""} \
{
if (substr($0,38,1) == "X") \
{
print substr($0,1,37), "S", substr($0,39)
} \
else {
print $0
}
}' > /tmp/receipt.tmp