LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 618|回复: 5

有关文件编辑的问题?

[复制链接]
发表于 2004-8-25 10:12:21 | 显示全部楼层 |阅读模式
有关文件编辑的问题!

小弟在练习用SHELL编程编辑文件时。 想改变某个文件的某个字段。

文件 :IN .txt
one two three four five
red yellow blue yellow white
apple banana orange peach pear
sister brother father mother uncle

我试着把文件的第2行 第4 个字段“yellow"  改为 "yellow,gray"
cat in.txt | awk '/red/ { printf $4 "," "gray" ; } 0> in.txt

发现文件原内容被覆盖了。
cat in.txt | awk '/red/ { printf $4 "," "gray" ; } 0>> in.txt

文件在最后添加"yellow,gray"。
请问有没有什么方法实现在原来的地方替换啊?

谢谢!
发表于 2004-8-25 10:20:31 | 显示全部楼层
  1. awk 'NR==2{$4="yellow,gray"}{print}' file >tmp$$;rm file;mv tmp$$ file
复制代码
 楼主| 发表于 2004-8-25 10:49:30 | 显示全部楼层
谢谢!
能不能解释一下这条语句啊!
不好意思!我菜啊
发表于 2004-8-25 13:54:55 | 显示全部楼层
他现写到一个临时的文件tmp$$里面,然后把原来的file删掉了,在把tmp$$改名为原来的文件名。
 楼主| 发表于 2004-8-25 14:43:33 | 显示全部楼层
那NR==2是什么意思? 可不可以直接写入文件?
cat file | awk 'NR==2{$4="yellow,gray"}{print}' >file?
发表于 2004-8-26 14:58:04 | 显示全部楼层
最初由 tw2050 发表
那NR==2是什么意思? 可不可以直接写入文件?
cat file | awk 'NR==2{$4="yellow,gray"}{print}' >file?

NR是awk的内制变量,NR==2,表示第2行,想了解更多awk的知识,可以搜索本论坛!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表