我想在我的UNIX shell中的文檔中統計hard tab characters
的數字。計數linux中製表符的字符數
我該怎麼辦?
我想是這樣
grep -c \t foo
但它給的T計數文件foo。
我想在我的UNIX shell中的文檔中統計hard tab characters
的數字。計數linux中製表符的字符數
我該怎麼辦?
我想是這樣
grep -c \t foo
但它給的T計數文件foo。
使用TR放棄一切,除了標籤,再算上:
< input-file tr -dc \\t | wc -c
不知道還有誰在這裏尋找回答這個https://cmdchallenge.com/#/find_tabs_in_a_file :) – BenB
使用perl正則表達式(-P
選項)grep製表符字符。
所以,要計算的標籤字符數在文件:
grep -o -P '\t' foo | wc -l
-P只是GNU,這篇文章沒有標籤Linux。 – jordanm
您可以將引號之間的文字製表符與按Ctrl + V + TAB 。
一般而言,您可以插入任何字符,前綴爲Ctrl + V;甚至可以控制字符,如輸入或Ctrl + C shell將以其他方式解釋。
我的第一個想法是使用sed
去除所有非製表符,然後使用wc
來計算剩餘的字符數。
< foo.txt sed 's/[^\t]//g' | wc -c
然而,這也算換行,這sed
不會觸及,因爲它是基於行的。因此,讓我們使用tr
將所有換行符翻譯爲空格,因此它是sed
的一行。
< foo.txt tr '\n' ' ' | sed 's/[^\t]//g' | wc -c
根據您的外殼和實施sed
,您可能需要使用文字標籤,而不是\t
,然而,與Bash和GNU sed
,上述作品。
Bash使用一個$'...'
符號用於指定特殊字符:
grep -c $'\t' foo
您可以在一個取巧的辦法用awk:使用選項卡作爲記錄分隔符,那麼製表符的數量就是總記錄數減1:
ntabs=$(awk 'BEGIN {RS="\t"} END {print NR-1}' foo)
並計算每行標籤字符的數量:'awk'BEGIN {FS =「\ t」} {print NF -1}'foo'('FS'是'awk'的字段分隔符)。 –
你想計算選項卡字符的數量還是包含選項卡字符的行數?在你給出的例子中,如果'\ t'已經工作,你會得到後者(*包含標籤*的行數)。 –