我有很多具有線是通過以下方式文件:替換>用「sed的正則表達式
#include "3rd-party/*lots folders*>
的問題是,它與>
代替"
是到此爲止一個快速的正則表達式sed的改動?
基本上,如果符合#include "3rd-party
開始,就應更換的最後一個字符來"
。
在此先感謝
我有很多具有線是通過以下方式文件:替換>用「sed的正則表達式
#include "3rd-party/*lots folders*>
的問題是,它與>
代替"
是到此爲止一個快速的正則表達式sed的改動?
基本上,如果符合#include "3rd-party
開始,就應更換的最後一個字符來"
。
在此先感謝
基本上,你可以使用:
sed '/^[[:space:]]*#include "3rd-party/s/>[[:space:]]*$/"/' file
說明:
/^[[:space:]]*#include/
是一個地址,一個正則表達式的地址。隨後的命令將應用於啓動哪個可選空間後跟#include
語句的行。s/>[[:space:]]*$/"/
替換>
,然後是可選空間和行末尾"
。如果要更改文件到位使用-i
選項:
sed -i '/^[[:space:]]*#include/s/>[[:space:]]*$/"/' file
在一堆,讓我們說C
文件,請使用find
,它的-exec
選項:
find . -name '*.c' -exec sed -i '/^[[:space:]]*#include/s/[[:space:]]*$/"/' {} \;
您可以使用th是:
sed -i '' '/^[[:blank:]]*#include "3rd-party/s/>$/"/' file
#include "3rd-party/*lots folders*"
您可以使用sed
像
sed '/search_pattern/{action}' your_file
你想要做的是與>$
其中>
替換一行的最後cahracter行動在這條線搜索的模式,做一個動作是你想要的字符,並且$
表示搜索到的字符必須放在一行的末尾。
這樣做的動作是sed
命令s///
,其工作就像s/search_pattern/replace_pattern/
。
這看起來對你的目標,如:
sed '/#include "3rd-party/{s/>$/"/}' your_file
但由於sed
是一個(或多個)tream(ED)itor你必須使用的sed的命令標誌-i
與>
在線進行更改或管道它一個新文件。
像這樣
sed -i '/#include "3rd-party/{s/>$/"/}' your_file
或類似這樣的
sed '/#include "3rd-party/{s/>$/"/}' your_file > new_file
請讓我知道,如果這樣做的工作。
'[[:blank:]]'不是'sed'理解的字符類。 – hek2mgl
這是不正確的,我用OSX'sed'和'gnu sed'測試過它,它工作。 – anubhava
然後它是一個隱藏的「功能」。在手冊頁之後,它應該是'[[:space:]]' – hek2mgl