awk - 将多个字符串替换 awk 命令合并为一个
问题描述
我有两个单独的 awk 命令,它们将destination_file 的特定行的第三列替换为源文件的特定行的第三列。这些命令可以工作,但是对于大量的 IO 操作来说很麻烦。有没有办法将 awk 命令组合成一个?
我目前的命令是:
z2=$(awk 'NR==12 { print$1 }' ../source_folder/source_file)
z3=$(awk 'NR==14 { print$1 }' ../source_folder/source_file)
awk -v z2=$z2 'NR==10{$3=z2} 1' destination_file > temp && mv temp destination_file
awk -v z3=$z3 'NR==11{$3=z3} 1' destination_file > temp && mv temp destination_file
作为对这个问题的扩展,我获得 z2、z3、z4 的值的行来自 NR==12、14、16 ...,而我要替换的 destination_file 中的行是 NR==10 , 11, 12 ...; 有没有办法编写一个序列来执行此字符串替换操作,而不是列出所有 z1、z2、z3 ...?
解决方案
您可以将两个程序合二为一。只有 1 个awk
程序来检查这两个条件NR==10
,NR==11
并根据条件对各个字段进行相应的赋值。这会将输出保存到输出文件中。
z2=$(awk 'NR==12 { print$1 }' ../source_folder/source_file)
z3=$(awk 'NR==14 { print$1 }' ../source_folder/source_file)
awk -v z2="$z2" -v z3="$z3" 'NR==10{$3=z2} NR==11{$3=z3} 1' destination_file > temp && mv temp destination_file
推荐阅读
- javascript - 带有下一个和后一个问题的 JavaScript 轮播功能
- git - 如何推送到分支中的特定目录?
- python - 运行 pip install pymssql 时出错
- java - get view 方法在生成对象之前崩溃
- html - Flexbox 列布局:1 向左,2 堆叠在右侧
- c# - ASP.NET Core Razor 页面 | 部分视图可以有页面模型吗
- php - 在 PHP 文件中,识别放置在应用程序清单文件中的密钥
- javascript - c# 中 mvc 控制器后面的代码中具有 3 列和动态行的动态表
- ios - 未找到自动链接框架 Realm
- android - Google Play 上的一个测试帐户可以安装多少台设备有限制吗?