在 awk 脚本中的搜索模式中使用变量
#!/usr/local/bin/gawk -f `
{
awkvar2="/id=22/";
awkvar3="/end/";
if ($0 ~ awkvar2) {
triggered=1;
}
if (triggered) {
print;
if ($0 ~ awkvar3) {
triggered=0;
print "\n-----------------------------------------------\n"
}
}
}
这个 awk 脚本不适合我 我正在尝试从一行搜索到另一行,即 id=22
直到 end
(我不使用 /
的原因是因为我想在每个搜索块之后有一个大行) 我希望仅使用变量。
我可以直接使用模式 if ($0 ~ /end/) {
但我不想这样做,我想使用搜索模式内的变量 (原因是我将通过 shell 动态获取变量中的值)
请告诉我如何在 awk 的搜索模式中使用变量
,谢谢...
#!/usr/local/bin/gawk -f `
{
awkvar2="/id=22/";
awkvar3="/end/";
if ($0 ~ awkvar2) {
triggered=1;
}
if (triggered) {
print;
if ($0 ~ awkvar3) {
triggered=0;
print "\n-----------------------------------------------\n"
}
}
}
this awk script is not working for me
i am trying to search from one line to another i.e id=22
till end
(the reason i am not using /<string>/,/<string>/
is because i want a big line after each block of search)
and i want this using variables only.
i could directly use the patterns if ($0 ~ /end/) {
but i dont want to do that, i want to use the variables inside the search pattern
(reason is i will be getting the values in the variables dynamically thorough the shell)
please advise me how to use variables inside the search pattern for awk
thanks...
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
编辑
根据请求修改以打印“id=22”之前的行
或者,更多笨拙
Edit
Modified per request to print the line before "id=22"
Or, more awkish
belisarius awk 脚本的更紧凑版本,没有“if”
More compact version of belisarius awk script, without 'if's