如何制作像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 ...