我試過幾乎所有的東西(我猜)但沒有任何工作。 (操作系統:Ubuntu的12.04)正則表達式在Sed中的空格字符
要匹配的表達式(從文本文件中刪除):
a c 4
a k 23
o s 1
我試了一下:
's/[[a-z][:space:][a-z][:space:][0-9]]\{1,\}//gi'
's/.\s.\s[0-9]+//g'
's/[:alpha:][:space:][:alpha:][:space:][:digit:]+'
我試過幾乎所有的東西(我猜)但沒有任何工作。 (操作系統:Ubuntu的12.04)正則表達式在Sed中的空格字符
要匹配的表達式(從文本文件中刪除):
a c 4
a k 23
o s 1
我試了一下:
's/[[a-z][:space:][a-z][:space:][0-9]]\{1,\}//gi'
's/.\s.\s[0-9]+//g'
's/[:alpha:][:space:][:alpha:][:space:][:digit:]+'
這應該匹配:
sed 's/[a-z][ ]*[a-z][ ]*[0-9]*//gi'
你的第一次嘗試忽略了幾個方括號,你不需要最外層的o NE:因爲你需要躲避+
sed 's/[a-z][[:space:]][a-z][[:space:]][0-9]\{1,\}//gi' input
你的第二個示例失敗,它仍然會在GNU的sed只工作:
sed 's/.\s.\s[0-9]\+//g' input
也有一些類似的問題,最後一個:
sed 's/[[:alpha:]][[:space:]][[:alpha:]][[:space:]][[:digit:]]\+//' input
一個在中間是關閉!出於我無法理解的原因,你必須逃避加號。 我也將點「.
」替換爲「[a-z]
」,所以它只匹配字母。
sed 's/[a-z]\s[a-z]\s[0-9]\+//g'
老版便攜版本sed
-Versions(您好,Mac用戶!)。有些sed
實現是挑剔的 「+
」:
sed 's/[a-z]\s[a-z]\s[0-9][0-9]*//g'
[...]
定義字符類。 [a-z]
匹配從a
到z
的任何字符。要匹配連續的字符,您必須爲每個字符使用一個類:[a-z][[:space:]][a-z]
。
對於+
具有特殊含義,您必須將其反斜槓:[0-9]\+
。
命名字符類只在字符類內工作,即[[:alpha:]][[:space:]]
。