Awk

帶有空記錄分隔符的 awk 只列印一個文件

  • March 26, 2022

以下程式碼如何只列印一個文件?

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

只有 GNUawkmawk(1.3.4 版或更高版本)可以\0用作記錄分隔符,意思是“空字元”。舊版本的mawk、 BSD awk、 Busybox awk、 Plan 9awk等都將字元串視為空字元串,即,它啟用“段落模式”(兩個或多個連續的換行符分隔記錄)\0RS``RS

引用自:https://unix.stackexchange.com/questions/673654