免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2797 | 回复: 3
打印 上一主题 下一主题

[文本处理] 请问awk加RS参数后,会自动多输出一个换行 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2014-07-25 09:56 |只看该作者 |倒序浏览

找出以FileMananger.get的行,输出是正常的,如果加了RS参数,就会多一个换行。
  1. mac:~$ gawk  '/FileManager.get/ {print $0"=="}' /index.html
  2. FileManager.get('js/js_1222.js',==
  3. FileManager.get("/138021/css/v8/v8.css");TemplateEngine.get('/root.html?136040', LT.Env.cRoot);TemplateEngine.get('c/resume/main.html?136325',==
  4. FileManager.get('/136037/css/v9/b.css');==
  5. FileManager.get('/136037/js/js_1.js');==
  6. FileManager.get("/136037/js/js_1.js");==
复制代码
加RS的情况,会在分隔处加了换行。
  1. mac:~$ gawk -v RS=";"  '/FileManager.get/ {print $0"=="}' /index.html
  2. <html>
  3. <head>
  4. <script>
  5. FileManager.get('js/js_1222.js',
  6. "/137851/css/v11/css_1.css",
  7. '/136322/css/v8/lpt/css_2.css')==

  8. FileManager.get("/138021/css/v8/v8.css")==

  9. FileManager.get('/136037/css/v9/b.css')==

  10. FileManager.get('/136037/js/js_1.js')==

  11. FileManager.get("/136037/js/js_1.js")==
复制代码
index.html文件内容是:
  1. <head>
  2. <script>
  3. FileManager.get('js/js_1222.js',
  4. "/css/v11/css_1.css",
  5. '/css/v8/lpt/css_2.css');TemplateEngine.get('b/resume/main.html', LT.Env.cRoot);
  6. FileManager.get("/css/v8/v8.css");TemplateEngine.get('/root.html', LT.Env.cRoot);TemplateEngine.get('c/resume/main.html',
  7. LT.Env.cRoot);
  8. FileManager.get('/css/v9/b.css');
  9. LT.File.Js.load('/p/p_1.js');
  10. NodeTpl.get('c/resume/main');
  11. NodeTpl.get("c/resume/main");
  12. FileManager.get('/js/js_1.js');
  13. FileManager.get("/js/js_1.js");
  14. TemplateEngine.get('root.html', LT.Env.cRoot);
  15. TemplateEngine.get("/c/resume/main.html", LT.Env.cRoot);
  16. </script>
  17. </head>
复制代码
其实我只想要,这样的数据,不知道有没有好办法,用AWK,因为后面还会用到AWK的gsub把指定文案替换掉,谢谢大家。
  1. FileManager.get('js/js_1222.js',
  2. "/css/v11/css_1.css",
  3. '/css/v8/lpt/css_2.css');
  4. FileManager.get("/css/v8/v8.css");
  5. FileManager.get('/css/v9/b.css');
  6. FileManager.get('/js/js_1.js');
  7. FileManager.get("/js/js_1.js");
复制代码

论坛徽章:
2
射手座
日期:2014-10-10 15:59:4715-16赛季CBA联赛之上海
日期:2016-03-03 10:27:14
2 [报告]
发表于 2014-07-25 10:02 |只看该作者
回复 1# limaoyuan
  1. awk -v RS="FileManager.get" -F';' 'NR>1 {print RS$1"=="}'
复制代码

论坛徽章:
0
3 [报告]
发表于 2014-07-25 10:38 |只看该作者
回复 2# yinyuemi


    学习了,谢谢大神

论坛徽章:
0
4 [报告]
发表于 2014-07-25 11:08 |只看该作者
本帖最后由 limaoyuan 于 2014-07-25 11:08 编辑

回复 2# yinyuemi


    我想续问一个问题,请问怎么把匹配出来的值替换为指定的值?用awk gsub的方式。

    比如用您提供的这个命令可以找到FileMananger中包含的js或css版本,现在要给引用不同的js和css前面加上不同的版本。
  1. mac:~$ gawk -F";" -v RS="FileManager.get" 'NR>1{print $1"=="}' /index.html
  2. ('js/js_1222.js',
  3. "/css/v11/css_1.css",
  4. '/css/v8/lpt/css_2.css')==
  5. ("/css/v8/v8.css")==
  6. ('/css/v9/b.css')==
  7. ('/js/js_1.js')==
  8. ("/js/js_1.js")==
复制代码
现在想用gsub在FileMananger中引用的文件前加对应的版本号,比如在/css/v11/css_1.css前12345版本号
  1. gawk -F";" -v RS="FileManager.get" -v s="'/css/v11/css_1.css'" -v d="'/123456/css/v11/css_1.css'" 'NR>1{gsub(s,d)}1' /index.html
复制代码
结果并没有被正确替换掉,请问这是什么原因?应该怎么改一下,谢谢。


您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP