免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12
最近访问板块 发新帖
楼主: sandermansxj
打印 上一主题 下一主题

如何用awk或sed实现呢?[ 已解决] [复制链接]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
11 [报告]
发表于 2009-11-05 09:24 |只看该作者
$0=$1" "v

论坛徽章:
0
12 [报告]
发表于 2009-11-05 09:37 |只看该作者
原帖由 blackold 于 2009-11-5 09:24 发表
$0=$1" "v



多谢黑哥指导

awk -v v=`cat file1` 'NR==1,/content/{if($1=="content"){$0=$1" := "v}};1'  file2
这样就可以了  

那个 :=  我还是希望能保留的


再次感谢楼上所有的高手们的帮助!

论坛徽章:
0
13 [报告]
发表于 2009-11-05 11:04 |只看该作者
原帖由 ywlscpl 于 2009-11-4 17:22 发表
awk -v v="`cat file1`" '!T&&/^content/{sub(/:=.*$/,":= "v);T=1}1' file2



黑哥,能再问你一个问题吗?

假如我用一个bash脚本实现这句话

我在脚本的开始先定义变量

NEWSTRING=`cat file1`
PAIREDSTRING="content"


awk -v v="$NEWSTRING"  -v w="$PAIREDSTRING" '!T&&/^w/{sub(/:=.*$/,":= "v);T=1}1' file2---------这样是不行的



怎么样才能把 w的值传到/^ / 这个里面呢?


我这样说,不知道说清楚了没?呵呵

[ 本帖最后由 sandermansxj 于 2009-11-5 11:08 编辑 ]

论坛徽章:
5
2015年辞旧岁徽章
日期:2015-03-03 16:54:152015年迎新春徽章
日期:2015-03-04 09:50:282015年亚洲杯之朝鲜
日期:2015-03-13 22:47:33IT运维版块每日发帖之星
日期:2016-01-09 06:20:00IT运维版块每周发帖之星
日期:2016-03-07 16:27:44
14 [报告]
发表于 2009-11-05 11:09 |只看该作者
sub(w" :=.*$",w" := "v)
sub这样用不是好方法。

论坛徽章:
0
15 [报告]
发表于 2009-11-05 11:20 |只看该作者
原帖由 sandermansxj 于 2009-11-5 11:04 发表



黑哥,能再问你一个问题吗?

假如我用一个bash脚本实现这句话

我在脚本的开始先定义变量

NEWSTRING=`cat file1`
PAIREDSTRING="content"


awk -v v="$NEWSTRING"  -v w="$PAIREDSTRING" '! ...


awk -v v="$NEWSTRING"  -v w="$PAIREDSTRING" '!T&&"^"w{sub(/:=.*$/,":= "v);T=1}1' file2

  1. [root@Mylinux tmp]# a=123
  2. [root@Mylinux tmp]# echo "123 456" | awk -v v=$a '/456$/&&"^"v'
  3. 123 456
  4. [root@Mylinux tmp]#
复制代码

[ 本帖最后由 ywlscpl 于 2009-11-5 11:22 编辑 ]

论坛徽章:
0
16 [报告]
发表于 2009-11-05 11:45 |只看该作者

回复 #15 ywlscpl 的帖子

好像还是不行哦

论坛徽章:
0
17 [报告]
发表于 2009-11-05 11:51 |只看该作者

  1. cat file1

  2. 111111

  3. cat file2

  4. dfdf
  5. ghghfgjh
  6. content := 123456 gfgfg hghgherer
  7. 565656
  8. 788787
  9. content :=


  10. cat aa-temp.sh

  11. #!/usr/bin/env bash

  12. NEWSTRING=`cat file1`
  13. PAIREDSTRING="content"


  14. awk -v v="$NEWSTRING"  -v w="$PAIREDSTRING" '!T&&"^"w{sub(/:=.*$/,":= "v);T=1}1' file2

  15. ./aa-temp.sh 后file2没有变化

复制代码

论坛徽章:
0
18 [报告]
发表于 2009-11-05 12:06 |只看该作者

回复 #17 sandermansxj 的帖子

嗯,搞错了,以为可以省略~,应该这样
  1. awk -v v="$NEWSTRING"  -v w="$PAIREDSTRING" '!T&&$0~"^"w{sub(/:=.*$/,":= "v);T=1}1' file2
复制代码


可以参考
http://bbs.chinaunix.net/viewthr ... p;extra=&page=2

论坛徽章:
0
19 [报告]
发表于 2009-11-05 12:31 |只看该作者

回复 #18 ywlscpl 的帖子

多谢多谢了。

awk实在是不太懂了,哎。。。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP