我該如何grep那些有空間的值。我正在嘗試:awk那些值包含空白
awk -F '\t' '$19 ~ /[0-9[:blank:]0-9]/ {print $19}' myfile.txt
0000280000
0000209600
0000181 96
0000179586
0000122393
0000000000
我該如何grep那些有空間的值。我正在嘗試:awk那些值包含空白
awk -F '\t' '$19 ~ /[0-9[:blank:]0-9]/ {print $19}' myfile.txt
0000280000
0000209600
0000181 96
0000179586
0000122393
0000000000
應指定POSIX字符分開類,象下面這樣:
awk -F '\t' '$19~/[0-9]+[[:space:]]/{ print $19 }' myfile.txt
首先,表達[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打印下一個塊中的該字段。
您可以通過使用簡單的grep語句做到這一點:
grep ' ' filename.txt
對於某一特定領域尋找空間,使用此:
cat file.txt|awk -F '\t' {'print $19'}|grep ' '