输入文件 text.txt:
foo()
{
}
buz()
{
}
Run Code Online (Sandbox Code Playgroud)
哦script.awk:
BEGIN {
RS = "\n\n+";
FS = "\n";
}
/[a-z]+\(\)\n/ {print "FUNCTION: " $1;}
{print "NOT FOUND: " $0;}
Run Code Online (Sandbox Code Playgroud)
运行脚本:
awk -f 脚本.awk 文本.txt
给出:
NOT FOUND: foo()
{
}
NOT FOUND: buz()
{
}
Run Code Online (Sandbox Code Playgroud)
但我希望将这两个函数与换行符匹配。这该怎么做?
由于您已经使用 "\n" 作为 FS,您可以只对 $1 进行匹配:
awk -v RS='\n\n+' -v FS='\n' '
$1 ~ /^[a-z]+\(\)$/ {print "FUNCTION: " $1; next}
{print "NOT FOUND: " $0}
' text.txt
Run Code Online (Sandbox Code Playgroud)
这适用于gawk:
FUNCTION: foo()
FUNCTION: buz()
Run Code Online (Sandbox Code Playgroud)