shell脚本学习进行文件内容替换,求高手指导!感谢!

新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分126 UID61809阅读权限30积分1072帖子精华可用积分1073 专家积分0 在线时间17 小时注册时间最后登录
家境小康, 积分 1072, 距离下一级还需 928 积分
帖子主题精华可用积分1073 专家积分0 在线时间17 小时注册时间最后登录
论坛徽章:0
想进行文件内容替换
文件内容如下:
username1 65
username2 84
username3 88
username4 89
username5 86
username6 33
username7 56
username8 53
username9 68
username10 63
用sed实现. 功能: 查找文件中的用户名,找到用户名后,更改后面的无规则数字并保存.谁有好的思路,求助!
广结互联网高手!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分2734 UID阅读权限90积分58543帖子精华可用积分58543 专家积分0 在线时间4785 小时注册时间最后登录
帖子主题精华可用积分58543 专家积分0 在线时间4785 小时注册时间最后登录
认证徽章论坛徽章:28
目测一下吧:awk '/\&username\&/{$2=&xxoo&}'
sed '/^username\b/s/ .*/ xxoo/'复制代码
希望2015是丰收的一年
空间积分0 信誉积分391 UID阅读权限30积分1095帖子精华可用积分1095 专家积分0 在线时间371 小时注册时间最后登录
家境小康, 积分 1095, 距离下一级还需 905 积分
帖子主题精华可用积分1095 专家积分0 在线时间371 小时注册时间最后登录
认证徽章论坛徽章:3
举个例子,想改成什么样的结果啊
空间积分0 信誉积分126 UID61809阅读权限30积分1072帖子精华可用积分1073 专家积分0 在线时间17 小时注册时间最后登录
家境小康, 积分 1072, 距离下一级还需 928 积分
帖子主题精华可用积分1073 专家积分0 在线时间17 小时注册时间最后登录
论坛徽章:0
主要是想替换文件内容
比如查找到 username4
username4 89
把username4 后面的数字替换成 45
其他的用户名保持不变。
广结互联网高手!
希望2015是丰收的一年
空间积分0 信誉积分391 UID阅读权限30积分1095帖子精华可用积分1095 专家积分0 在线时间371 小时注册时间最后登录
家境小康, 积分 1095, 距离下一级还需 905 积分
帖子主题精华可用积分1095 专家积分0 在线时间371 小时注册时间最后登录
认证徽章论坛徽章:3
awk '{a[$1]=$2}END{for(i in a)if(i==&username4&)print i,&45&;else print i,a[i]}' test复制代码sed -r 's/^(username4 )(.*)/\345/' test复制代码
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分16 UID阅读权限10积分28帖子精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
白手起家, 积分 28, 距离下一级还需 172 积分
帖子主题精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
论坛徽章:0
小弟想查找某一行中的数据,并将数据所在/etc/sysctl.conf的行进行替换,例如某行为 umask 22,想替换为umask 23,于是使用脚本
& & cat /etc/sysctl.conf | grep &^umask& & /dev/null& &
& & if [ $? -eq 0 ];then
& &&&sed -i 's/^umask = .*/umask = 23/' /etc/sysctl.conf
可是发现每次执行完毕打开/etc/sysctl.conf发现umask结果还是umask 22,求指导,难道是脚本写错啦?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分2318 UID阅读权限90积分43486帖子精华可用积分48789 专家积分0 在线时间4913 小时注册时间最后登录
富甲一方, 积分 43486, 距离下一级还需 6514 积分
帖子主题精华可用积分48789 专家积分0 在线时间4913 小时注册时间最后登录
论坛徽章:24
你确定你的 sysctl.conf 里有 umask 开头的行?
如果你发现我的回复跟你说的不是一回事, 那么, 偶是来抬杠的. screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
如果你发现我的回复正好是你想知道的, 那么, 是俺蒙对了. screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
空间积分0 信誉积分16 UID阅读权限10积分28帖子精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
白手起家, 积分 28, 距离下一级还需 172 积分
帖子主题精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
论坛徽章:0
确定的,头都大了搞得回复
空间积分0 信誉积分16 UID阅读权限10积分28帖子精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
白手起家, 积分 28, 距离下一级还需 172 积分
帖子主题精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
论坛徽章:0
确定的回复
空间积分0 信誉积分16 UID阅读权限10积分28帖子精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
白手起家, 积分 28, 距离下一级还需 172 积分
帖子主题精华可用积分28 专家积分0 在线时间12 小时注册时间最后登录
论坛徽章:0
我大概知道了,它打印输出是umask=23,但是源文件还是umask=22,查了下,需要重定向,大神们可不可以帮我看下怎么解决?难道直接sed -i 's/^umask = .*/umask = 23/' & /etc/sysctl.conf& &,求指导
空间积分860 信誉积分2779 UID阅读权限100积分44427帖子精华可用积分44427 专家积分105 在线时间11473 小时注册时间最后登录
帖子主题精华可用积分44427 专家积分105 在线时间11473 小时注册时间最后登录
认证徽章论坛徽章:59
& & sed -i 可以直接修改源文件,不需要重定向。
【ChinaUnix索引树】
【Windows批处理】
空间积分0 信誉积分226 UID阅读权限10积分142帖子精华可用积分142 专家积分0 在线时间182 小时注册时间最后登录
白手起家, 积分 142, 距离下一级还需 58 积分
帖子主题精华可用积分142 专家积分0 在线时间182 小时注册时间最后登录
论坛徽章:0
grep &^umask& /etc/sysctl.conf
可有结果?
空间积分0 信誉积分206 UID阅读权限20积分210帖子精华可用积分222 专家积分0 在线时间98 小时注册时间最后登录
稍有积蓄, 积分 210, 距离下一级还需 290 积分
帖子主题精华可用积分222 专家积分0 在线时间98 小时注册时间最后登录
论坛徽章:1
& & cat /etc/sysctl.conf | grep &^umask& & /dev/null& &
这个手动执行看下,有几行
空间积分0 信誉积分2318 UID阅读权限90积分43486帖子精华可用积分48789 专家积分0 在线时间4913 小时注册时间最后登录
富甲一方, 积分 43486, 距离下一级还需 6514 积分
帖子主题精华可用积分48789 专家积分0 在线时间4913 小时注册时间最后登录
论坛徽章:24
daxuewuhen2014
都 &&/dev/null& 了, 还会有几行?
如果你发现我的回复跟你说的不是一回事, 那么, 偶是来抬杠的. screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
如果你发现我的回复正好是你想知道的, 那么, 是俺蒙对了. screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onmouseover="if(this.width>screen.width*0.7) {this.resized= this.width=screen.width*0.7; this.style.cursor='hand'; this.alt='Click here to open new window\nCTRL+Mouse wheel to zoom in/out';}" onclick="if(!this.resized) {} else {window.open(this.src);}" onmousewheel="return imgzoom(this);" alt="" />
空间积分0 信誉积分179 UID阅读权限20积分285帖子精华可用积分285 专家积分0 在线时间158 小时注册时间最后登录
稍有积蓄, 积分 285, 距离下一级还需 215 积分
帖子主题精华可用积分285 专家积分0 在线时间158 小时注册时间最后登录
论坛徽章:0
daxuewuhen2014
汗。。。结果都被扔到垃圾桶了 没有打印了就
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分327 UID阅读权限10积分134帖子精华可用积分135 专家积分0 在线时间232 小时注册时间最后登录
白手起家, 积分 134, 距离下一级还需 66 积分
帖子主题精华可用积分135 专家积分0 在线时间232 小时注册时间最后登录
论坛徽章:0
我想用“abc”这个字符串替换掉文件file_a中的第2行第6列的值,请问有什么方法?
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分1715 UID阅读权限90积分8413帖子精华可用积分8413 专家积分0 在线时间3296 小时注册时间最后登录
腰缠万贯, 积分 8413, 距离下一级还需 1587 积分
帖子主题精华可用积分8413 专家积分0 在线时间3296 小时注册时间最后登录
认证徽章论坛徽章:27
本帖最后由 关阴月飞 于
23:01 编辑
假设你说的列,是以空格为分隔符的: awk 'NR==2{$6=&aaa&}1' file_a &new_file && mv new_file file_a复制代码
落花已作风前舞 又送黄昏雨。
空间积分0 信誉积分3228 UID阅读权限90积分23133帖子精华可用积分23133 专家积分0 在线时间2577 小时注册时间最后登录
巨富豪门, 积分 23133, 距离下一级还需 16867 积分
帖子主题精华可用积分23133 专家积分0 在线时间2577 小时注册时间最后登录
认证徽章论坛徽章:19
本帖最后由 zongg 于
17:08 编辑
&&恩,看错了,
学习是一种态度,不求一日千里,但求循序渐进 .
空间积分0 信誉积分32 UID阅读权限10积分94帖子精华可用积分96 专家积分0 在线时间24 小时注册时间最后登录
白手起家, 积分 94, 距离下一级还需 106 积分
帖子主题精华可用积分96 专家积分0 在线时间24 小时注册时间最后登录
论坛徽章:0
学习一下。
空间积分860 信誉积分2779 UID阅读权限100积分44427帖子精华可用积分44427 专家积分105 在线时间11473 小时注册时间最后登录
帖子主题精华可用积分44427 专家积分105 在线时间11473 小时注册时间最后登录
认证徽章论坛徽章:59
& & 没看清题目吧?第6列
【ChinaUnix索引树】
【Windows批处理】
空间积分0 信誉积分327 UID阅读权限10积分134帖子精华可用积分135 专家积分0 在线时间232 小时注册时间最后登录
白手起家, 积分 134, 距离下一级还需 66 积分
帖子主题精华可用积分135 专家积分0 在线时间232 小时注册时间最后登录
论坛徽章:0
本帖最后由 okrush 于
15:51 编辑
是以空格为分隔的。
类似这样的操作有没有不用中转文件的方法?
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处linux 下如何批理替换文件内容。
[问题点数:40分]
linux 下如何批理替换文件内容。
[问题点数:40分]
不显示删除回复
显示所有回复
显示星级回复
显示得分回复
只显示楼主
相关帖子推荐:
2005年12月 C/C++大版内专家分月排行榜第二2005年11月 C/C++大版内专家分月排行榜第二2005年8月 C/C++大版内专家分月排行榜第二
2009年9月 Linux/Unix社区大版内专家分月排行榜第三2005年9月 C/C++大版内专家分月排行榜第三
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年6月 其他开发语言大版内专家分月排行榜第二2011年4月 其他开发语言大版内专家分月排行榜第二2011年2月 其他开发语言大版内专家分月排行榜第二2010年8月 其他开发语言大版内专家分月排行榜第二
2010年11月 其他开发语言大版内专家分月排行榜第三2010年10月 其他开发语言大版内专家分月排行榜第三2010年7月 其他开发语言大版内专家分月排行榜第三
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
2011年5月 Linux/Unix社区大版内专家分月排行榜第一2011年4月 Linux/Unix社区大版内专家分月排行榜第一2011年3月 Linux/Unix社区大版内专家分月排行榜第一2010年12月 Linux/Unix社区大版内专家分月排行榜第一2010年11月 Linux/Unix社区大版内专家分月排行榜第一2010年10月 Linux/Unix社区大版内专家分月排行榜第一2010年9月 Linux/Unix社区大版内专家分月排行榜第一2010年8月 Linux/Unix社区大版内专家分月排行榜第一2010年7月 Linux/Unix社区大版内专家分月排行榜第一2010年6月 Linux/Unix社区大版内专家分月排行榜第一2010年5月 Linux/Unix社区大版内专家分月排行榜第一2010年4月 Linux/Unix社区大版内专家分月排行榜第一2010年3月 Linux/Unix社区大版内专家分月排行榜第一2010年2月 Linux/Unix社区大版内专家分月排行榜第一2010年1月 Linux/Unix社区大版内专家分月排行榜第一2009年10月 Linux/Unix社区大版内专家分月排行榜第一2009年9月 Linux/Unix社区大版内专家分月排行榜第一
2011年7月 Linux/Unix社区大版内专家分月排行榜第二2011年6月 Linux/Unix社区大版内专家分月排行榜第二2011年2月 Linux/Unix社区大版内专家分月排行榜第二
本帖子已过去太久远了,不再提供回复功能。新手园地& & & 硬件问题Linux系统管理Linux网络问题Linux环境编程Linux桌面系统国产LinuxBSD& & & BSD文档中心AIX& & & 新手入门& & & AIX文档中心& & & 资源下载& & & Power高级应用& & & IBM存储AS400Solaris& & & Solaris文档中心HP-UX& & & HP文档中心SCO UNIX& & & SCO文档中心互操作专区IRIXTru64 UNIXMac OS X门户网站运维集群和高可用服务器应用监控和防护虚拟化技术架构设计行业应用和管理服务器及硬件技术& & & 服务器资源下载云计算& & & 云计算文档中心& & & 云计算业界& & & 云计算资源下载存储备份& & & 存储文档中心& & & 存储业界& & & 存储资源下载& & & Symantec技术交流区安全技术网络技术& & & 网络技术文档中心C/C++& & & GUI编程& & & Functional编程内核源码& & & 内核问题移动开发& & & 移动开发技术资料ShellPerlJava& & & Java文档中心PHP& & & php文档中心Python& & & Python文档中心RubyCPU与编译器嵌入式开发驱动开发Web开发VoIP开发技术MySQL& & & MySQL文档中心SybaseOraclePostgreSQLDB2Informix数据仓库与数据挖掘NoSQL技术IT业界新闻与评论IT职业生涯& & & 猎头招聘IT图书与评论& & & CU技术图书大系& & & Linux书友会二手交易下载共享Linux文档专区IT培训与认证& & & 培训交流& & & 认证培训清茶斋投资理财运动地带快乐数码摄影& & & 摄影器材& & & 摄影比赛专区IT爱车族旅游天下站务交流版主会议室博客SNS站务交流区CU活动专区& & & Power活动专区& & & 拍卖交流区频道交流区
空间积分0 信誉积分100 UID阅读权限20积分338帖子精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
稍有积蓄, 积分 338, 距离下一级还需 162 积分
帖子主题精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
论坛徽章:0
有以下两个文本,现需将 info_x 文件的内容替换 info 中&Name& &C&所对应的define msg{..}的所有内容。
$ cat info
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Addr& & xxx
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{
#& && &&&Name& & C& && && && && &
#& && &&&Sex& &&&0
#& && &&&Tel& &&&011-123456
#& && &&&Addr& & xxx
#& && &&&...
$ cat info_x
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
-----------------------------
更进一步,如果 info_x 文件的内容为:
$ cat info_x
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
然后怎样来替换 info 文件中相应的“Name&&D”和“Name&&C”的全部内容呢?
期待指导,谢谢。
[ 本帖最后由 bier-linux 于
12:39 编辑 ]
规律 自由 稳健 突破 —— 在规律的生活中享受自由,从稳健的发展中寻求突破!
&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp&&nbsp|&&nbsp
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^}/) {print a[v1];break}}print}' info_x info复制代码
空间积分0 信誉积分100 UID阅读权限20积分338帖子精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
稍有积蓄, 积分 338, 距离下一级还需 162 积分
帖子主题精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
论坛徽章:0
原帖由 ywlscpl 于
14:07 发表
awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^}/) {print a[v1];break}}p ...
多谢 ywlscpl,但执行时发现不能替换以#开头的define mag{..}的内容,执行情况如下:
1)当被替换内容没有被#注释时,成功:
$ cat info_x
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
$ awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^}/) {print a[v1];break}}print}' info_x info
define msg{& && && && && && && && && && && &&&//Name&&D所对应的全部内容成功替换
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{
#& && &&&Name& & C& && && && && &
#& && &&&Sex& &&&0
#& && &&&Tel& &&&011-123456
#& && &&&Addr& & xxx
#& && &&&...
2)当替换以#开始的内容时,不成功:
$ cat info_x
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
$ awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^}/) {print a[v1];break}}print}' info_x info
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Addr& & xxx
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{& && && && && && && && && && && && & //Name C所对应的内容未替换
#& && &&&Name& & C& && && && && &
#& && &&&Sex& &&&0
#& && &&&Tel& &&&011-123456
#& && &&&Addr& & xxx
#& && &&&...
3)当替换文本中有#注释和未注释的内容时,只替换未注释内容:
$ cat info_x
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
$ awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^}/) {print a[v1];break}}print}' info_x info
define msg{& && && && && && && && && && && &&&//Name&&D所对应的全部内容成功替换
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{& && && && && && && && && && && && &//Name C所对应的内容未替换
#& && &&&Name& & C& && && && && &
#& && &&&Sex& &&&0
#& && &&&Tel& &&&011-123456
#& && &&&Addr& & xxx
#& && &&&...
----------------
对于以上问题,希望得到ywlscpl和CU高手们更进一步的指导和解答,同时希望ywlscpl能简单解释代码的含义,先谢了!
[ 本帖最后由 bier-linux 于
08:30 编辑 ]
规律 自由 稳健 突破 —— 在规律的生活中享受自由,从稳健的发展中寻求突破!
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
回复 #3 bier-linux 的帖子
我本意就是注释的行不去做任何修改
awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/)
把其中几个正则改下你再试试吧:
把if (T&&/^}/)改成if (T&&/^#*}/)
把/^define msg/改成/^#*define msg/
还有后面一个
while (getline) if (/^}/)
if (/^}/)改成if (/^#*}/)
[ 本帖最后由 ywlscpl 于
08:41 编辑 ]
空间积分0 信誉积分100 UID阅读权限20积分338帖子精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
稍有积蓄, 积分 338, 距离下一级还需 162 积分
帖子主题精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
论坛徽章:0
原帖由 ywlscpl 于
08:38 发表
我本意就是注释的行不去做任何修改
awk 'NR==FNR{if (T&&/^}/)T=0;if (/^define msg/)
把其中几个正则改下你再试试吧:
把if (T&&/^}/)改成if (T&&/^#*}/)
把/^define msg/改成/^#*define msg/
还有后面 ...
ywlscpl兄,好像还是不行:
$ cat info_x
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
$ awk 'NR==FNR{if (T&&/^#*}/)T=0;if (/^#*define msg/){T=1;next}if (T&&/Name/){v=$2;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$2 in a) {v1=$2;while (getline) if (/^#*}/) {print a[v1];break}}print}' info_x info
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Addr& & xxx
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{
#& && &&&Name& & C& && && && && &
#& && &&&Sex& &&&0
#& && &&&Tel& &&&011-123456
#& && &&&Addr& & xxx
#& && &&&...
规律 自由 稳健 突破 —— 在规律的生活中享受自由,从稳健的发展中寻求突破!
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
回复 #5 bier-linux 的帖子
呵呵,考虑不周。
把所有的$2改成$NF
因为加了#后,NAME行变3个字段了
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
awk 'NR==FNR{if (T&&/^#*}/)T=0;if (/^#*define msg/){T=1;next}if (T&&/Name/){v=$NF;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$NF in a) {v1=$NF;while (getline) if (/^#*}/) {print a[v1];break}}print}' info_x info &tmpfile复制代码
把#define msg和#}之间的行行首加上#
awk 'T&&/^#}/{T=0}/^#define msg/{T=1;next}T{$0=&#&$0}1'&&tmpfile复制代码
[ 本帖最后由 ywlscpl 于
09:08 编辑 ]
空间积分0 信誉积分100 UID阅读权限20积分338帖子精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
稍有积蓄, 积分 338, 距离下一级还需 162 积分
帖子主题精华可用积分338 专家积分0 在线时间384 小时注册时间最后登录
论坛徽章:0
原帖由 ywlscpl 于
08:55 发表
呵呵,考虑不周。
把所有的$2改成$NF
因为加了#后,NAME行变3个字段了
OK,现在已经可以进行匹配替换了(不过还有个小问题,见下面红色字体,还望ywlscpl兄解答):
$ cat info_x& &
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
$ awk 'NR==FNR{if (T&&/^#*}/)T=0;if (/^#*define msg/){T=1;next}if (T&&/Name/){v=$NF;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$NF in a) {v1=$NF;while (getline) if (/^#*}/) {print a[v1];break}}print}' info_x info
define msg{
& && &&&Name& & D
& && &&&Sex& &&&0
& && &&&Tel& &&&010-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
define msg{
& && &&&Name& & B& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&020-123456
& && &&&Addr& & xxx
& && &&&...
#define msg{& && && && && && && && && && && && && && &//#未能去掉
& && &&&Name& & C& && && && && &
& && &&&Sex& &&&0
& && &&&Tel& &&&011-123456
& && &&&Mob& &&&
& && &&&Addr& & xxx
& && &&&Zip& &&&110623
& && &&&...
#}& && && && && && && && && && && && && && && && && && && &&&//#未能去掉
----------------
由于以上是在一个脚本里实现的功能,要赶时间,因此就“囫囵吞枣”ywlscpl兄的成果了,待有时间一定好好研究学习一下ywlscpl兄的解答。
同时,对ywlscpl兄的awk功底很是钦佩!!!
ywlscpl兄:
在你的博客里,看见你的《数据处理一例(awk函数应用)》,如获至宝,但由于对awk认识有限,所以想麻烦你就我的实际应用进行一下修改,先谢了!
文本内容如下:
$ cat file
s1:s2:s3:host01,em01,10.0.0.1|host[02-07],em[02-07],10.0.0.[10-15]|host08,em08,10.0.0.23
前三个字段是以“:”为分割符,host字段间是以“|”进行分割的,想要得到以下形式的文本:
host01,em01,10.0.0.1
host02,em02,10.0.0.10
host07,em07,10.0.0.15
host08,em08,10.0.0.23
[ 本帖最后由 bier-linux 于
20:13 编辑 ]
规律 自由 稳健 突破 —— 在规律的生活中享受自由,从稳健的发展中寻求突破!
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
回复 #8 bier-linux 的帖子
嗯,我还是理解错了你的意图,以为这些被注释的段落只进行info_x中对应NAME段落的替换,#是保留的。
那可以这样,在print前做一次判断并删掉#
awk 'NR==FNR{if (T&&/^#*}/)T=0;if (/^#*define msg/){T=1;next}if (T&&/Name/){v=$NF;a[v]=$0;next}if (T) a[v]=a[v]&\n&$0}NR&FNR{if (/Name/&&$NF in a) {v1=$NF;while (getline) if (/^#*}/) {print a[v1];break}}if (/^#define msg/||/^#}/) sub(/^#/,&&);print}' info_x info复制代码
空间积分0 信誉积分409 UID阅读权限90积分42040帖子精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
富甲一方, 积分 42040, 距离下一级还需 7960 积分
帖子主题精华可用积分42040 专家积分170 在线时间3453 小时注册时间最后登录
论坛徽章:0
回复 #8 bier-linux 的帖子
把你的问题稍微扩展了一下:序号改成不定长的
[root@Mylinux tmp]# cat file
s1:s2:s3:host01,em01,10.0.0.1|host[02-07],em[02-07],10.0.0.[10-15]|host08,em08,10.0.0.23|host[001-004],em[01-04],10.0.0.[111-114]复制代码
习惯写成命令行了,影响可读性
awk -F '[:|]' 'function splt(v){split(v,M,&,&);split(M[1],host,&[][-]&);split(M[2],em,&[][-]&);split(M[3],addr,&[][-]&);len_host=length(host[2]);len_em=length(em[2]);len_addr=length(addr[2]);num=host[3]-host[2];for (i=0;i&=i++) printf &%s%0&len_host&d,%s%0&len_em&d,%s%0&len_addr&d\n&,host[1],host[2]+i,em[1],em[2]+i,addr[1],addr[2]+i}{for (j=4;j&=NF;j++) if ($j~/-/) splt($j);else print $j}' file复制代码
结果
host01,em01,10.0.0.1
host02,em02,10.0.0.10
host03,em03,10.0.0.11
host04,em04,10.0.0.12
host05,em05,10.0.0.13
host06,em06,10.0.0.14
host07,em07,10.0.0.15
host08,em08,10.0.0.23
host001,em01,10.0.0.111
host002,em02,10.0.0.112
host003,em03,10.0.0.113
host004,em04,10.0.0.114复制代码
[ 本帖最后由 ywlscpl 于
21:26 编辑 ]
北京皓辰网域网络信息技术有限公司. 版权所有 京ICP证:060528号 北京市公安局海淀分局网监中心备案编号:
广播电视节目制作经营许可证(京) 字第1234号
中国互联网协会会员&&联系我们:
感谢所有关心和支持过ChinaUnix的朋友们
转载本站内容请注明原作者名及出处}

我要回帖

更多关于 linux shell脚本攻略 的文章

更多推荐

版权声明:文章内容来源于网络,版权归原作者所有,如有侵权请点击这里与我们联系,我们将及时删除。

点击添加站长微信