Regular-Expression
如何在 awk 中使用正則表達式作為欄位分隔符?
我正在嘗試將正則表達式用作
awk
. 從我的閱讀來看,這似乎是可能的,但我無法正確使用語法。rpm -qa | awk '{ 'FS == [0-9]' ; print $1 }' awk: cmd. line:1: { FS awk: cmd. line:1: ^ unexpected newline or end of string
想法?如果不明顯的話,目標是獲取沒有版本號的軟體列表。
你搞砸了你的引號和語法。要設置輸入欄位分隔符,最簡單的方法是使用
-F
命令行上的選項:awk -F '[0-9]' '{ print $1 }'
要麼
awk -F '[[:digit:]]' '{ print $1 }'
這將使用任何數字作為輸入欄位分隔符,然後從每行輸出第一個欄位。
和表達式並不完全相同
[0-9]
,具體取決於您的語言環境。見“之間的區別[[:digit:]]
$$ 0-9 $$,$$ [:digit: $$] 和 \d “。也可以
FS
在awk
程序本身中設置。這通常在一個BEGIN
塊中完成,因為它是一次性初始化:awk 'BEGIN { FS = "[0-9]" } { print $1 }'
請注意,單引號不能在 shell 中的單引號字元串中使用,並且
awk
字元串始終使用雙引號。