[英]Unix Bash- How to print word count immediately after file name without line break
我試圖將目錄中的文件名與行/字數全部打印在一行上。 我現在的輸出方式是:
foo.txt
500
bar.txt
210
...應該是什么:
foo.txt 500
bar.txt 210 ...
我期望答案看起來像什么:wc -l | awk {something}
這是一種簡單但有缺陷的方法:
wc -l *.txt | awk '$2 != "total" { print $2, $1 }'
但是,如果文件名中有空格,則上面的命令將在第一個空格處打印掉那些文件名。 同樣,對總數的限制也很薄弱,對於名為“ totalrash.txt ”的文件來說,它會中斷很多(感謝@rici的精明批評)。
這是一個更安全,但時間更長的解決方案:
wc -l *.txt | awk '{ count = $1; sub("^ *[0-9]+ ", ""); if ($0 != "total") print count, $0 }'
您可以使用一個簡單的循環,然后awk:
為我在* .txt中
做
awk'END {printf“%s%d \\ n”,FILENAME,NR}'$ i
做完了
或者,您可以像這樣使用wc -l:
wc -l * .txt | awk'$ 2!=“總計” {printf“%s%d \\ n”,$ 2,$ 1}'
wc -l *.txt | awk '{print $2,$1}'
您的問題中提供的樣本輸入是否有用?
一些用戶擔心文件名中不必要的空格字符
以下應該為您工作:
for i in *.txt; do echo ${i##*/} `wc -l "$i" | awk '{print $1}'`; done
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.