計算文字檔案每列的行數

計算文字檔案每列的行數

我有一個具有以下格式的文字檔案:

5 3 1
2 3 4
.....
.....
即空格分隔的 3 列數字/ 但是,某些行可能類似於:
2
3 1
所以,我想檢測文本文件是否有任何這樣的不一致並列印出來。我該怎麼做呢?

答案1

史蒂芬·查澤拉斯建議

awk 'NF != 3'

這是列印所有不包含三列的行的簡單方法。如果您還希望命令在找到任何此類行時返回失敗狀態:

awk 'NF != 3 {print; ++bad} END {exit(!!bad)}'

刪除print;以不列印任何內容,僅透過退出狀態報告此類行的存在。

您也可以使用 grep 執行此操作:

grep -Ev '^[^ ]+ +[^ ]+ +[^ ]+$'

如果您想要更嚴格並列印不恰好由三列組成的所有行,則每列都包含一個整數:

grep -Ev '^([0-9]+) +([0-9]+) +([0-9]+)$'

如果您希望允許一個或多個製表符作為列分隔符,請使用製表符[␉ ]+而不是 +where 。用於(␉| +)允許恰好一個製表符或一系列空格。

答案2

如果您真正想要的是問題標題中詢問的內容,此awk命令將列印行號和每行中的欄位數:

awk '{print NR,NF}'

答案3

awk '{if(NF != 3) print NR,NF}' file.txt

這將列印文件中沒有 3 個欄位的行號以及它們具有的欄位數。

相關內容