簡體   English   中英

Unix Bash-如何在文件名后立即打印字數,而無需換行

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM