如何說「不是」sed
中的某個字符?sed:我的模式可以包含「不是」字符嗎?我怎麼說「不是X」?
回答
[^x]
這是可以接受任何字符以外x
字符類。
我將添加來自掌握正則表達式的警告。請注意,爲了匹配,那裏一定有東西。正則表達式'su [^ x]'將匹配'sum'和'sun',但不匹配'su'。 – johnny
你如何解決它匹配你提到'蘇'的情況? – jcalfee314
@ jcalfee314,我相信它應該可以添加一個?像'su [^ x]?'這意味着它應該匹配零個或其中一個字符。 – GradysGhost
對於那些不滿意所選答案按johnny's comment。
'su [^ x]'將匹配'sum'和'sun',但不匹配'su'。
您可以使用下面的語法告訴sed來not
匹配線,x
:
sed '/x/! s/su//' file
即使它應該匹配,這也會跳過'x su'。你可以執行'/ sux /!s/su //',但是它仍然會跳過'su sux',也許第一個,而不是第二個'su'應該匹配。理想情況下,OP應澄清要求。 – tripleee
有你的問題的兩種可能的解釋。像其他人已經指出的那樣,[^x]
匹配不是x
的單個字符。但空字符串也不是x
,所以也許你正在尋找[^x]\|^$
。
這些答案都不會延伸到多字符序列,這通常是人們正在尋找的。你可以精心打造類似
[^s]\|s\($\|[^t]\|t\($\|[^r]\)\)\)
組成一個正則表達式不匹配str
,但在sed
一個更簡單的解決辦法是要刪除的確實比賽str
任意行,然後繼續休息;
sed '/str/d' file
的Perl 5引入了更豐富的正則表達式引擎,這是Java,PHP,Python等於是標準由於Perl有益支持sed
語法的一個子集,你很可能轉換一個簡單的sed
腳本Perl來得到一個有用的功能,從這個擴展的正則表達式的方言,如負斷言:
perl -pe 's/(?:(?!str).)+/not/' file
將替換字符串這是不str
與not
。 (?:...)
是一個非捕獲組(與許多sed
方言不同,非轉義括號是Perl中的元字符),並且(?!str)
是否定斷言;緊接在字符串中此位置之後的文本不得爲str
以便正則表達式匹配。 +
重複此模式,直到它無法匹配。注意比賽中每個位置的斷言必須是真實的,所以我們一次匹配一個字符與.
(新手們經常得到這個錯誤,並且錯誤地僅在例如較長模式的開始處斷言,然而其可以匹配str
在某處,導致「泄漏」)。
- 1. 我怎麼說是不是,是不是
- 2. Java - 我怎麼說我不在乎這部分字符串包含什麼?
- 3. 我的代碼怎麼說模塊套接字不可調用?
- 4. 我可以使用包含而不是會話變量嗎?
- 5. 你怎麼說字符串是不可變的,因爲你可以改變它?
- 6. 我可以在IOS上使用mach_star/mach_override嗎?如果不是,我該怎麼辦?
- 7. 我可以在StringTemplate中使用字符串分隔符嗎?如果不是,什麼是好的模板引擎?
- 8. 我可以根據URL是否包含字符串(如「page =」
- 9. 我們可以說「C語言運算符是多態的」嗎?
- 10. 爲什麼我的EntityA包含EntityB,但不是EntityB包含EntityA?
- 11. makefile是否可以包含UTF8字符?
- 12. 是否可以包含特殊字符
- 13. 我要怎麼說在VBA中不是空的
- 14. Android SDK說我沒有JDK,不是嗎?
- 15. 我怎麼知道我的Perl模塊是否包含在-M下?
- 16. 我可以模擬我的MySql字段是一個數組嗎
- 17. 我可以在Groovy變量名中包含奇數字符嗎?
- 18. list.files()可以忽略R中不包含模式的路徑嗎?
- 19. 爲什麼在我的字符串中有`=`而不是`\ x`?
- 20. 我如何可以驗證字符串是否包含特定字符範圍
- 21. 我怎麼可以打印變量,因爲它不是變量
- 22. 這是字符串Base64嗎?我怎麼知道什麼是使用的編碼?
- 23. 我可以在Magento中使用Redis而不是Mysql嗎?怎麼樣?
- 24. 我可以連接我的包含數據的字符串與mysql查詢嗎?
- 25. 查找概率,概率是什麼,我可以說這是不好的
- 26. 爲什麼我們可以說`arr.inject(:+)`,但不得不說`arr.map(&:to_s)`?
- 27. 我可以使用Joomla的onAfterRender模塊而不是插件嗎?
- 28. 是否可以在我的列名中包含%符號?
- 29. 我怎麼可以不點擊按鈕
- 30. 我可以在XML模式中表達「可能/不可以包含」跨越多個級別的規則嗎?
'[^ X]'是除X之外的任何字符。 PS雖然我們知道你的意思,SED不應該被大寫 –
@Sanjay好吧,我會取消大寫sed。你能否在下一次回答部分發布答案,而不是評論? – KRB