
如何製作像grep
將用反斜線轉義的多行視為長單行這樣的工具?
假設我有一些如下所示的文件:
testvar=test1 \
test2 \
test3
othervar=oth1 \
oth2
如果我現在grep
為 testvar 它會返回testvar=test1 \
,但是有什麼辦法可以讓它返回testvar=test1 test2 test3
嗎?
或多或少如何將這些多個轉義行視為單行?
筆記:如果無法使用 來完成此操作,也歡迎grep
有關如何使用其他工具(例如sed
或 )來完成此操作以獲得相同結果的提示。awk
答案1
根據awk
您的用例設定欄位分隔符號和記錄分隔符號:
awk 'BEGIN { FS="\n"; RS ="" } /testvar/' yourfile
testvar=test1 \
test2 \
test3
請參閱手動輸入多行記錄。
答案2
您可以使用連接這些行的內容對其進行預處理,例如:
awk 'match($0,/\\+$/) && RLENGTH % 2 {
sub(/\\$/,""); printf "%s", $0; next
}
{print}' | grep ...