Text-Processing
Gnu Sed:空格字元類與行尾字元不匹配
模式:abc 後跟空格或者是一行中的最後一個字元。
orig="abc[[:space:]]+"; new=Hello sed -i -r -e "s|${orig}|${new}|g" ./file ;
文件:
abc abcd abc abc d
執行後:
abc abcd abc Hellod
預期輸出:
Hello abcd Hello Hello d
我錯過了什麼?
注意:我想保留空格字元。
如果您想要保留空格:
注意:我想保留空格字元。
然後,匹配它們,但在替換時恢復它們:
orig='abc([[:space:]]+)' new='Hello\1' sed -E -e "s|${orig}|${new}|g" ./infile ;
這將生成此輸出(要就地修改添加適當的
-i
選項):Hello abcd Hello Hello d
當然,這是假設文件在某些行的末尾有一些空格:
$ cat infile | sed -n l abc $ abcd $ abc $ $ abc d$
如果您還需要正則表達式匹配不以空格結尾的行,則需要更複雜的正則表達式:
orig='abc([[:space:]]+|$)'; new='Hello\1'; sed -E -e "s,${orig},${new},g" ./infile ;
當然,
s|||
必須更改分隔符s,,,
以避免與|
正則表達式所需的衝突。