我的檔案夾中有很多檔案filesToCheck,下面給出一些示例。我需要result.txt如下所示的輸出。我可以將 linux bash 與任何不需要額外安裝的命令一起使用。
下面的試用(在 stackoverflow 的幫助下)在我執行時有兩個問題。CAKE_FROSTING盡管有全域標志,但它只查找一個實體,g并且檔案result.txt仍然為空> result.txt。
sed -Enz 's/.*CAKE_FROSTING\(\n?"([^"]*).*/\1\n/gp' filesToCheck/* > result.txt
我需要改變什么?
檔案1.cpp
something
CAKE_FROSTING("is.simply.the.best", "[no][matter][what]") { DO(something(0) == 1); }
檔案2.h
something else
CAKE_FROSTING(
"is.kinda.neat",
"[i][agree]") something else
something more
檔案 3.cpp
random_text CAKE_FROSTING("Can be nice") "more random text"
CAKE_CREAM("totally.sucks", "[trust][me]")
random_text CAKE_FROSTING("Can be very nice") "indeed"
期望結果.txt
is.simply.the.best
is.kinda.neat
Can be nice
Can be very nice
currentResult 命令列輸出:
is.simply.the.best
is.kinda.neat
Can be nice
uj5u.com熱心網友回復:
假設字串CAKE_FROSTING每行出現一次,你可以試試這個sed
$ sed -En ':a;N;s/.*CAKE_FROSTING\(\n?"([^"]*).*/\1/p;ba' filesToCheck/*
is.simply.the.best
is.kinda.neat
Can be nice
Can be very nice
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/528132.html
標籤:linux重击sed脚本
