![带有空记录分隔符的 awk 仅打印一个文件](https://linux22.com/image/197134/%E5%B8%A6%E6%9C%89%E7%A9%BA%E8%AE%B0%E5%BD%95%E5%88%86%E9%9A%94%E7%AC%A6%E7%9A%84%20awk%20%E4%BB%85%E6%89%93%E5%8D%B0%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6.png)
下面的代码如何只打印一个文件?
find "$fdir" -type f -name "${fnam}-*.png" -print0 | awk -v RS='\0' -F'[-.]' '{print $(NF-1), $0}' | cat -vet
这给了我
04 /home/flora/edvart/docs/schimmel-04.png$
但做find "$fdir" -type f -name "${fnam}-*.png"
给
/home/flora/edvart/docs/schimmel-04.png
/home/flora/edvart/docs/schimmel-05.png
/home/flora/edvart/docs/schimmel-06.png
/home/flora/edvart/docs/schimmel-07.png
/home/flora/edvart/docs/schimmel-08.png
/home/flora/edvart/docs/schimmel-09.png
/home/flora/edvart/docs/schimmel-10.png
/home/flora/edvart/docs/schimmel-11.png
/home/flora/edvart/docs/schimmel-12.png
/home/flora/edvart/docs/schimmel-13.png
/home/flora/edvart/docs/schimmel-1.png
/home/flora/edvart/docs/schimmel-2.png
/home/flora/edvart/docs/schimmel-3.png
答案1
只有 GNU awk
and mawk
(版本 1.3.4 或更高版本)可以用作\0
记录分隔符,含义为“空字符”。mawk
、 BSD awk
、 Busybox awk
、 Plan 9等的旧版本都将in 中的awk
字符串视为空字符串,即,它启用“段落模式”(两个或多个连续的换行符分隔记录)。\0
RS
RS