awk - 使用 awk 查找和替换目录中每个文件中的字符串
问题描述
我有一个充满输出文件的目录,文件的名称为:
file1.out
, file2.out
,..., fileN.out
.
每个文件中都有一个特定的密钥字符串,我们称之为keystring
. 我想替换所有文件中的每个keystring
实例newstring
。
如果只有一个文件,我知道我可以这样做:
awk '{gsub("keystring","newstring",$0); print $0}' file1.out > file1.out
有没有办法遍历awk中的所有N个文件?
解决方案
您可以使用find
相同的命令。请确保在测试文件正常运行后首先在测试文件上运行它,然后只在您的实际路径(在所有实际文件上)运行它以更安全。这也需要gawk
更新的版本,其中包含inplace
将输出保存到文件本身的选项。
find your_path -type f -name "*.out" -exec awk -i inplace -f myawkProgram.awk {} +
您的awk
程序如下:根据您显示的示例(cat myawkProgram.awk
仅在此处显示您的 awk 程序的内容)。
cat myawkProgram.awk
{
gsub("keystring","newstring",$0); print $0
}
第二个选项是通过执行类似的操作将所有.out
格式文件传递到您的gawk
程序本身-inplace
(但再次确保您首先在单个测试文件上运行它,然后在您被命令说服后运行实际命令以获得更安全的一面):
awk -i inplace '{gsub("keystring","newstring",$0); print $0}' *.out
推荐阅读
- openlayers - 如何在 OpenLayers 中正确释放已移除层的 WebGL 资源?
- sql - MySQL好友关系
- reactjs - 使用 Material UI Autocomplete 和 React 挂钩表单进行错误验证
- c++ - 如何正确对齐结构?
- javascript - 使用 typescript 将类型定义为 history.push() 已作为有效负载传递给 saga?
- spring-cloud - 如何在没有服务注册中心的情况下使用 FeignClient?
- css - Chrome:如何使用脚本为所有使用该堆栈的网站修改字体堆栈?
- python-3.x - “错误:无法为使用 PEP 517 且无法直接安装的 pyarrow 构建轮子”在带有 Linux Debian Buster 的 armv7 架构上
- mongodb - 平衡不工作的mongodb分片集群4.0.23
- javascript - 从字符串数组动态访问对象属性