wc -l file.txt
輸出行數和文件名。如何讓「wc -l」只打印沒有文件名的行數?
我只需要數字本身(不是文件名)。
我能做到這一點
wc -l file.txt | awk '{print $1}'
但也許有更好的辦法嗎?
wc -l file.txt
輸出行數和文件名。如何讓「wc -l」只打印沒有文件名的行數?
我只需要數字本身(不是文件名)。
我能做到這一點
wc -l file.txt | awk '{print $1}'
但也許有更好的辦法嗎?
試試這個方法:
wc -l < file.txt
在AIX ksh中,該數字前面總是有一個空格。我們必須使用| awk'{print $ 1}'或剪切,以修剪空間。另一種修剪方法是使用回聲。 – rao 2014-02-18 02:58:36
@rao是正確的,這將在數字前添加一個空格。我的解決方案解決了這個問題,並且比awk或cut更簡單。 – 2015-04-19 09:17:02
@rao bash沒有空間。空間來自ksh的位置在哪裏? 'wc -l'不應該發出一個,爲什麼ksh會在一個空格中預先輸出一個程序的標準輸出? – 2017-07-12 12:53:38
cat file.txt | wc -l
根據the man page(用於BSD版本,我沒有GNU版本檢查):
如果沒有指定文件,則使用標準輸入,沒有文件 名顯示爲 。該提示將接受輸入,直到接收到EOF或在大多數環境中的[^ D]。
如何
wc -l file.txt | cut -d' ' -f1
即管wc
輸出到cut
(其中分隔符是空格,並挑選僅僅是第一場)
這不比'wc -l file.txt | awk'{print $ 1}'OP試過了。 – doubleDown 2013-08-06 00:16:44
比'wc -l <file.txt'方法快。但是必須使用'|只要'wc'命令返回一個前導空格,例如:「34068289 file.txt」,而不是「34068289 file.txt」,就可以在BSD上剪切-d''-f2'。 – 2018-01-07 16:53:06
怎麼樣
grep -ch "^" file.txt
不錯。非常原創/創造性地使用'grep',但是檢查結果(不出意外)是比我的測試中簡單/直接的'wc'方法慢2倍到6倍。 – arielf 2017-04-21 04:41:43
要做到這一點,而不領先的空間,爲什麼不:
wc -l < file.txt | bc
我得到這個語法錯誤(Ubuntu 14.04)。我認爲文件名有問題。 – MERose 2015-07-07 23:34:23
在RHEL 6.7上引發錯誤: $ wc -l file.csv | BC (standard_in)1:語法錯誤 (standard_in)1:非法字符:N (standard_in)1:語法錯誤 (standard_in)1:語法錯誤 – 2016-05-19 20:09:21
我也得到了解析錯誤,但你可以用結合這使用'wc -l <file.txt'修復解析錯誤並刪除空格的其他答案:'wc -l <file.txt | bc' – jangosteve 2016-08-16 16:28:59
顯然,有很多這樣的解決方案。 這裏是另外一個,但:
wc -l somefile | tr -d "[:alpha:][:blank:][:punct:]"
這隻輸出的行數,但尾部的換行符(\n
)存在,如果你不想做,要麼,與[:space:]
更換[:blank:]
。
最好的辦法是首先的查找目錄中的所有文件,然後使用AWK NR(的記錄可變數目)
下面是命令:
find <directory path> -type f | awk 'END{print NR}'
例如: - find /tmp/ -type f | awk 'END{print NR}'
' wc -l <file.txt>可以精確而簡潔地完成這項工作。 – 2012-04-19 23:55:10
[在bash中只能得到wc的整數]可能的重複(http://stackoverflow.com/questions/3746947/get-just-the-integer-from-wc-in-bash) – 2015-11-19 23:05:04