空のレコード区切り文字を含むawkは、1つのファイルのみを印刷します。

空のレコード区切り文字を含むawkは、1つのファイルのみを印刷します。

次のコードはどのように1つのファイルしか印刷できませんか?

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

GNUawkmawk(バージョン 1.3.4 以降) のみが\0「ヌル文字」を意味するレコード区切り文字として使用できます。mawk、BSD awk、Busybox awk、Plan 9などの以前のバージョンでは、すべて文字列をawk空の文字列として扱いました。つまり、「短絡モード」(2つ以上の連続改行で区切られたレコード)を有効にします。\0RSRS

関連情報