給出文字範例:
.... 文字 ,.. {{{Python 字串1 = 'abcde' 字串2 = '12345' 印出(字串1[[1:3]]) 印出(字串2[[:-1]]) }}} .... 文字 ,..
和[[
也]]
出現在{{{
太之外。也許在 {{{ 和 }}} 之前有空格和製表符。
我想將 all [[
and替換]]
為[
and]
之間的{{{
and }}}
。
我需要將結果寫回原始文件。
我怎樣才能做到這一點?會sed
還是awk
工作?
答案1
這可能對你有用:
sed -i '/\s*{{{/,/\s*}}}$/s/\[\(\[[^]]*\]\)\]/\1/g' file.txt
答案2
這應該有效:
awk '/{{{/,/}}}/ { gsub(/\[\[/,"[");gsub(/\]\]/,"]") } { print }'
答案3
我將使用帶有次要狀態變數的 perl。假設您將以下內容儲存為replace.pl:
#!/usr/bin/perl -w
my $inbraces=0;
while (<>) {
/\{\{\{/ and $inbraces=1;
$inbraces==1 && s/\[\[/[/;
$inbraces==1 && s/]]/]/;
/}}}/ and $inbraces=0;
print $_;
}
你會想要運行類似的東西:
cat inputfile.txt | perl replace.pl > outputfile.pl
基本上,由於 while(<>),PERL 會針對每行輸入循環遍歷此值,並且對於每行,如果它與三括號正則表達式匹配,則會打開和關閉是否應進行替換。所有正規表示式幾乎與 sed 相同。由於其關鍵字性質,開括號在符合時會被轉義。