使用AWK处理文件

发布于 2024-08-27 12:50:25 字数 156 浏览 6 评论 0原文

我想使用 awk、grep 或 sed 创建一个批处理文件,保留所有以“INSERT”开头的行并删除其他行。

之后,当处理行中的第三个单词是“donextsit”时,我想用“servicechange)”替换字符串“change)”。

有人可以解释如何做到这一点吗?

I want to create a batch file with awk, grep or sed that keeps all lines beginning with 'INSERT' and deletes the other lines.

After this, I want to replace a string "change)" by "servicechange)" when the 3rd word in the treated line is "donextsit".

Can someone explain how to do this?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

半山落雨半山空 2024-09-03 12:50:25
awk '/INSERT/{ 
    if ($3=="donextsit"){
       gsub("change","servicechange");
       print
    }
}' file

因为这是家庭作业,有些东西仍然不起作用..你应该自己找出答案

awk '/INSERT/{ 
    if ($3=="donextsit"){
       gsub("change","servicechange");
       print
    }
}' file

since this is homework, something is still not working..you should find out for yourself

浅唱々樱花落 2024-09-03 12:50:25
sed '
    /^INSERT/ ! d;
    /^ *[^ ]\+ *[^ ]\+ *donextsit / s/change)/servicechange)/g;
' -i file

编辑:纳入乔纳森·莱夫勒的建议。

sed '
    /^INSERT/ ! d;
    /^ *[^ ]\+ *[^ ]\+ *donextsit / s/change)/servicechange)/g;
' -i file

Edit: Incorporated Jonathan Leffler's suggestions.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文