如何用awk实现匹配行指定字段替换后,重写源文件。 例如 源文件 data 内容如下 li 120 abc wang 200 bcd zhng 180 abc 我想重写后的 data 文件是 li 120 abc wang 500 bcd zhng 180 abc 也就是找到wang的匹配行,给第二个字段数据加300 我的几个尝试没能成功,请达人指教下如何实践 1.如果用 awk '/wang/{$2=$2+300;print $0}' data 则只打印匹配行 2.如果用 awk '/wang/{$2=$2+300};{print $0}' data 则输出整个文件却没有匹配行被输出 3. 如果用sub则似乎只能进行纯粹文字的替换,而不能实现变量或指定字段的替换。 如 awk '/wang/{sub(/120/,"500")};{print>"data" }' data. 我想要的是 $2=$2+300
1的作用是使条件为真,默认就会执行{print},打印全部内容,重定向的作用是让你原文编辑保存
awk '/#BEGIN/,/#END/{next}1' 1是什么意思? awk
'pattern{action}' file 删除passwd.conf文件中kernel开头的行中最后2行: awk '$1=="kernel" {$(NF-1)="";$NF=""}1' passwd.conf 增加两行 awk '$1==“kernel" {$(NF+1)="test1";$(NF+2)="test2"}1' passwd.conf
|
awk的使用记录总结
最新推荐文章于 2021-04-30 12:25:30 发布