感謝stackoverflow的幫助,我得到了下面的命令。但"match a single character not present in the set"不像我預期的那樣作業。第一次捕獲([^"][^\n,]*)應在",或處停止"\n,但目前僅在 處停止",\n。我的錯誤是什么,我該如何解決?
解決方案只能在 linux bash 上的 sed 中,理想情況下盡可能接近我當前的命令(以便我更容易理解)。
sed -En ':a;N;s/.*CAKE_FROSTING\(\n*?\s*?"([^"][^\n,]*)"[\n,]?\s*"?(([^"][^\n,]*)?")?.*,/\1\3/p;ba' filesToCheck/*
檔案.h
something else
CAKE_FROSTING(
"is supreme "
"and best",
"[i][agree]") something else
something more
something else
CAKE_FROSTING(
"is."kinda" neat " "in "fact"",
"[i][agree]") something else
something more
something else
CAKE_FROSTING("is supreme", "[i][agree]") something else
something more
something else
電流輸出
is supreme and best
is."kinda" neat " "in "fact"
is supreme "[i][agree]") something else
期望的輸出
is supreme and best
is."kinda" neat " "in "fact"
is supreme
uj5u.com熱心網友回復:
使用 GNUsed
$ sed -En ':a;N;s/.*CAKE_FROSTING\(\n*?\s*?"([^"][^\n,]*)"[\n,]?\s*"?(([^"][^\n,]*)?")?.*,[^\n]*/\1\3/p;ba' input_file
is supreme and best
is."kinda" neat " "in "fact"
is supreme
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/528970.html
標籤:重击sed
