【问题标题】:Gsub AWK case insensitiveGsub AWK 不区分大小写
【发布时间】:2015-10-13 21:09:50
【问题描述】:

在 AIX 上

sed  's/foo/bar/gwi'

文件不工作

我的 AIX 不喜欢 w 和 i 标志。 w 是写入文件本身, i 用于不敏感搜索 我知道我很久以前就这么做了——但我很懒,但仍然想把它放在抽屉里。我该如何替换

  • 第 1 次或第 N 次出现带有 bar 的 foo 并将其直接写入文件而不是 std o/p
  • 所有出现在 foo 与 bar 的不敏感方式的情况下 - 到同一个文件而不是 std o/p
  • 我可以拥有多个 i/p 文件,而不仅仅是一个

这适用于 ALL 并写入 std o/p。我希望它修改同一个文件,只吐出替换的行(将行拆分到 Std o/p 以确认它所做的任何事情,但直接写入文件)

awk 'IGNORECASE = 1{ gsub(/foo/,"bar")} 1 ' ipfile.txt 

【问题讨论】:

    标签: shell unix awk sed gsub


    【解决方案1】:

    由于您已经在使用IGNORECASE,看来您拥有 GNU awk。 GNU awk 也可以利用@include机制:

    awk '@include "/usr/share/awk/inplace.awk"; program' file
    

    或者

    awk --include=/usr/share/awk/inplace.awk 'program' file
    

    或者

    awk '@include "inplace"; program' file
    

    或者

    awk -iinplace 'program' file
    

    【讨论】:

    • 忽略大小写由于某种原因不起作用。不知道发生了什么
    • 我拥有非常有限的权限。在 AIX 上。上面的iinplace 参数和路径对于我的awk 都不存在。 (它是那些尴尬的 awk 之一!)。感谢您的帮助awk: Not a recognized flag: i Usage: awk [-u] [-F Character][-v Variable=Value][-f File|Commands][Variable=Value|File ...]
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-12-01
    • 2013-03-06
    • 2020-02-18
    • 2017-12-09
    • 2021-01-01
    • 1970-01-01
    相关资源
    最近更新 更多