我在 awk
中遇到一种情况,我需要将输入格式转换为另一种格式,然后使用单独处理的记录数。有什么方法可以使用 shell 变量来获取 END 部分
中的 NR
的值?像这样的东西:
cat file1 | awk 'some processing END{SHELL_VARIABLE=NR}' > file2
然后在 awk 之外使用 SHELL_VARIABLE。
我不想处理文件然后单独执行 wc -l
,因为文件很大。
最佳答案
一种方法:在 awk 中使用重定向命令并在 END
block 中打印结果。并使用命令替换来读取 shell 变量中的结果:
my_var=$(awk '{ some processing; print "your output" >>file2 } END { print NR }' file1)
关于shell - awk:在 awk 脚本中分配一个 shell 变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18165607/