NOTE:我是bash脚本和awk命令的菜鸟-请原谅我犯的任何愚蠢错误。
我无法将shell变量替换为我的awk模式。我正在尝试浏览文件,查找文件中特定字符串的首次出现,并按顺序打印后继它的每一行,直到它碰到一个空字符串/行。
我不知道我要事先搜索的字符串,我想用那个变量代替。
当我使用直接指定的字符串(例如“
funcName="<${2}>:"
awk=`awk -v FN="$funcName" '/FN/,/^$/' "$ofile"`
rfile=search.txt
echo -e "$awk" > "$rfile"
错误是什么都没打印出来。我要打印所需字符串和下一个空行之间的所有行。
您能不能尝试下面的步骤,因为没有明显的示例但尚未测试,因此尚未进行测试。
funcName="<${2}>:"
awk_result=$(awk -v FN="$funcName" 'index($0,FN){found=1} found; /^$/{found=""}' "$ofile")
rfile=search.txt
echo -e "$awk_result" > "$rfile"
OP尝试中解决的问题:
awk
变量名更改为awk_result
。var=$(......your commands....)
中的值固定为awk_result
变量。awk
代码修复,我使用了index
方法,该方法检查一行中是否存在变量FN
的值,然后将FLAG(变量TRUE)设置为false,直到该行为根据OP的要求为空。