Linux
bash +如何驗證每行中的所有單詞具有相同的計數
如何驗證每行中的所有單詞/字元串是否具有相同的計數
如果每行中的所有單詞都具有相同的計數,則語法將返回 true 和計數單詞的數量
如果行的計數不同,則語法將返回 false 和 count=NA
例如對於以下範例,我們將得到true並且count=5
sdb sde sdc sdf sdd sdc sdb sde sdd sdf sdb sdc sde sdf sdd sde sdb sdd sdc sdf sdc sde sdd sdb sdf
關於以下範例的範例,我們將得到false和count=NA
sdb sde sdc sdf sdd sdc sdb sde sdd sdf sdb sdc sde sdf sde sdb sdd sdc sdf sde sdd sdb sdf
關於以下範例的另一個範例,我們將得到false和count=NA
sdb sde sdc sdf sdd sdc sdb sde sdd sdf sdb sdc sde sdf sde sdb sdd sdc sdf sde sdd sdb sdf sde
使用
awk
:awk 'BEGIN { r = "true" } NR == 1 { n = NF; next } NF != n { r = "false"; n = "N/A"; exit } END { printf("status=%s count=%s\n", r, n) }' somefilename
或作為
awk
腳本:#!/usr/bin/awk -f BEGIN { r = "true" } NR == 1 { n = NF; next } NF != n { r = "false"; n = "N/A"; exit } END { printf("status=%s count=%s\n", r, n) }
該腳本將從設置
r
(如“結果”)開始true
(我們假設它是真而不是假)。然後它初始化n
(如“數字”)為第一行的欄位數。如果輸入數據中的任何其他行具有不同數量的欄位,
r
則設置為false
並n
設置為N/A
並且腳本退出(通過END
塊)。最後,列印
r
和的目前值。n
該腳本的輸出將類似於
status=true count=5
或者
status=false count=N/A
這可以與
export
orbash
’sdeclare
或一起使用eval
:declare $( awk '...' somefilename )
這將創建 shell 變數
count
,status
並且這些變數將在呼叫 shell 中可用。