2017-08-08 53 views
0

我該如何grep那些有空間的值。我正在嘗試:awk那些值包含空白

awk -F '\t' '$19 ~ /[0-9[:blank:]0-9]/ {print $19}' myfile.txt 
0000280000 
0000209600 
0000181 96 
0000179586 
0000122393 
0000000000 

回答

0

應指定POSIX字符分開類,象下面這樣:

awk -F '\t' '$19~/[0-9]+[[:space:]]/{ print $19 }' myfile.txt 
2

首先,表達[0-9[:blank:]0-9]數字0-9空白匹配。 (第二個0-9是多餘的)。對於第19欄中的所有測試數據都是如此,這就是爲什麼他們都被打印出來。

如果你想檢查一個空白 - 這是一個空格或製表符 - 你可以用:

awk -F'\t' '$19 ~ /[[:blank:]]/{print $19}' 

然而,由於字段由製表符分隔,你可以只用一個文字空間:

awk -F'\t' '$19 ~//{print $19}' 

除此之外,檢查中的一個領域字面空間不需要awk一個正則表達式,你可以使用index()

awk -F'\t' 'index($19, " "){print $19}' myfile.txt 

index()如果字段19不包含空格,則返回零,否則返回字符串中第一個匹配項的位置。由於字符串索引從1開始awk該位置將總是大於零,其值爲true並使awk打印下一個塊中的該字段。

0

您可以通過使用簡單的grep語句做到這一點:

grep ' ' filename.txt

對於某一特定領域尋找空間,使用此:

cat file.txt|awk -F '\t' {'print $19'}|grep ' '