我正在学习awk,我想知道是否有一个选项可以将更改写入文件,类似于sed,我将使用-i选项保存对文件的修改.

我知道我可以使用重定向来编写更改.然而,在awk人中有这样的 Select 吗?

推荐答案

在GNU Awk 4.1.0(2013年发布)及更高版本中,它有"inplace" file editing个选项:

[...] 使用新设施构建的"就地"扩展可用于模拟GNU"sed -i"功能.[...]

用法示例:

$ gawk -i inplace '{ gsub(/foo/, "bar") }; { print }' file1 file2 file3

要保留备份:

$ gawk -i inplace -v INPLACE_SUFFIX=.bak '{ gsub(/foo/, "bar") }
> { print }' file1 file2 file3

Linux相关问答推荐

为什么Read()和cin.get()对输出缓冲区的影响不同?

将十六进制文件名转换为十进制

Git - 打印以不同编码混合的文件

在具有不同文件类型的文件夹中编辑多个 xml 文件 - 使用预定顺序

如何启用或切换现有的Flutter 项目(仅限移动设备)到 MacOS 或 WEB 或 Linux 或 Windows?

nohup 是否可以跨管道工作?

如何/在哪里可以找到要修复的 Linux 内核错误?

如何在 linux 上为 JNI 应用程序编译动态库?

错误:命令gcc在 CentOS 上失败,退出状态为 1

在 Bash 中识别接收到的信号名称

仅在不存在时添加换行符

Linux 的 TextMate 替代品

从核心转储中获取堆栈跟踪

如何获取/使用 LibUUID?

Linux上C中的标准输出线程安全?

如何仅打印 hexdump 中的十六进制值,而不打印行号或 ASCII 表?

错误:ld.so:无法预加载对象 LD_PRELOAD:忽略

如何从目录复制内容而不是符号链接?

conda 命令会提示错误:Bad Interpreter: No such file or directory

如何在我的终端中编辑文本文件