如何用單個分號替換製表符或空白空格?用分號替換空格或製表符sed
這就是我想:
sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.
感謝
如何用單個分號替換製表符或空白空格?用分號替換空格或製表符sed
這就是我想:
sed -i.bak 's/(\s)+|(\t)+/,/g' aws_lab.txt
+/ was unexpected at this time.
感謝
只要使用適當的POSIX字符類:
sed 's/[[:space:]]\{1,\}/,/g' aws_lab.txt
很少SEDS將識別\s
簡寫[[:space:]]
和由於選項卡是[:space:]
中包含的字符之一,因此您無需單獨指定它。此外,+
是ERE元字符,而不是BRE,默認情況下由sed支持,因此您需要將-E
arg添加到sed以使用它(僅受GNU和OSX sed變體支持)。
好點,thx,固定。是的,我知道'[:blank:]'但是幾乎總是這樣,你正在處理的字符串不包含換行符,所以不管你使用'[:blank:]'還是'[:space:]'沒關係,或者你的字符串包含換行符,然後你希望它們像所有其他空格一樣對待,那麼你需要'[:space:]'而不是'[:blank:]''。所以我傾向於總是使用'[:space:]'來表示任何空格,如果我有特定的理由想要排除換行符,只需使用'[:blank:]''。 –
這可能會爲你工作(GNU SED):
sed -i.bak 's/[ \t][ \t]*/:/' file
或者
sed -ri.bak 's/[ \t]+/:/' file
哪裏有盈標籤的明確空間:
sed -i.bak 's/[ \t][ \t]*/:/g' file
將取代重複整條線的圖案。
您需要'-r'才能使用擴展正則表達式。 – aragaer
Try'/ [] + /;/g'其中和是它們代表的單個字符 –
Marichyasana
@aragaer'-r'只是GNU sed,'-E'也被GNU sed支持,在OSX sed中,因此比'-r'更便於攜帶。 –