免费注册 查看新帖 |

Chinaunix

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

[文本处理] 文本替换求助 [复制链接]

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
11 [报告]
发表于 2015-12-28 14:05 |只看该作者
本帖最后由 bikkuri 于 2015-12-28 14:08 编辑

谢谢您的帮助!
您的命令有一点小问题。
  1. [root@nchip:/tmp/test/bak]# awk 'BEGIN{i=0;j=0}NR==FNR{a[i++]=$0;next}/DEFINITIONS/&&!mild{if(!mild){mild=1;print $0;next}}/DEFINITIONS/&&mild{while (j<(i-1))print a[++j];mild=0}mild{if (j < (i-2))$0=a[++j]; else {j++;next}}1' new.def main.sh
  2. # main.sh
  3. #
  4. #-----------------------DEFINITIONS-----------------------------
  5. #-----------------------DEFINITIONS-----------------------------
  6. host1=www.google.com
  7. host2=www.yahoo.com.cn
  8. #-----------------------DEFINITIONS-----------------------------
  9. #-----------------------DEFINITIONS-----------------------------
  10. for i in $(seq 3); do
  11. [ ! "A"$(eval echo '执行以后出现了4行重复的DEFINITIONS,能把重复的2行去掉吗?
  12. 谢谢!

  13. [b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=&ptid=4231769]8#[/url] [color=Olive]tc1989tc[/color] [/b]


  14.     host$i) = "A" ] && echo "host$i is $(eval echo '执行以后出现了4行重复的DEFINITIONS,能把重复的2行去掉吗?
  15. 谢谢!

  16. [b]回复 [url=forum.php?mod=redirect&goto=findpost&pid=&ptid=4231769]8#[/url] [color=Olive]tc1989tc[/color] [/b]


  17.     host$i)"
  18. done
  19. [root@nchip:/tmp/test/bak]#
复制代码
执行以后出现了4行重复的DEFINITIONS,能把重复的2行去掉吗?
谢谢!

回复 8# tc1989tc


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
12 [报告]
发表于 2015-12-28 14:13 |只看该作者
现在可以了。非常感谢!

回复 10# haooooaaa


   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
13 [报告]
发表于 2015-12-28 14:14 |只看该作者
谢谢您的帮助!
您的命令也可以得到正确结果!

回复 7# songyc_2015


   

论坛徽章:
20
卯兔
日期:2015-01-26 22:05:142015亚冠之萨济拖拉机
日期:2015-09-10 15:15:282015亚冠之阿尔希拉尔
日期:2015-09-25 17:37:53程序设计版块每日发帖之星
日期:2015-10-03 06:20:00程序设计版块每日发帖之星
日期:2015-12-09 06:20:00CU十四周年纪念徽章
日期:2015-12-17 09:07:15程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:34程序设计版块每日发帖之星
日期:2015-12-25 06:20:342015亚冠之广州富力
日期:2015-08-27 19:29:56每日论坛发贴之星
日期:2015-08-26 06:20:002015亚冠之阿尔希拉尔
日期:2015-05-18 17:26:27
14 [报告]
发表于 2015-12-28 14:26 |只看该作者
回复 1# bikkuri
  1. h=$(sed -nr '/^#-+/{:1;N;/\n#-+/!b1;s#\n#\\n#gp}' new.def)
  2. sed -r '/^#-+/{:1;N;/\n#-+/!b1;s/.*/'"${h}"'/}' main.sh
  3. # main.sh
  4. #
  5. #-----------------------DEFINITIONS-----------------------------
  6. host1=www.google.com
  7. host2=www.yahoo.com.cn
  8. #-----------------------DEFINITIONS-----------------------------
  9. for i in $(seq 3); do
  10. [ ! "A"$(eval echo 'host$i) = "A" ] && echo "host$i is $(eval echo 'host$i)"
  11. done
复制代码

论坛徽章:
145
技术图书徽章
日期:2013-10-01 15:32:13戌狗
日期:2013-10-25 13:31:35金牛座
日期:2013-11-04 16:22:07子鼠
日期:2013-11-18 18:48:57白羊座
日期:2013-11-29 10:09:11狮子座
日期:2013-12-12 09:57:42白羊座
日期:2013-12-24 16:24:46辰龙
日期:2014-01-08 15:26:12技术图书徽章
日期:2014-01-17 13:24:40巳蛇
日期:2014-02-18 14:32:59未羊
日期:2014-02-20 14:12:13白羊座
日期:2014-02-26 12:06:59
15 [报告]
发表于 2015-12-28 14:29 |只看该作者
回复 9# bikkuri

$ awk 'function def(s){return(s~/^#-+DEFINITIONS-+/)}FNR==NR{if(def($0))flg=!flg;if(flg)new=new$0"\n";next}{if(def($0)){flg=!flg;if(flg)printf new}if(!flg)print}' new.def main.sh
# main.sh
#
#-----------------------DEFINITIONS-----------------------------
host1=www.google.com
host2=www.yahoo.com.cn
#-----------------------DEFINITIONS-----------------------------
base64_decode()
{
if [ -f /usr/bin/uudecode ] ; then
echo "begin-base64 644 b" > $dec64
awk '{print $0}' >> $dec64
echo "====" >> $dec64
uudecode -o $out64 $dec64
cat $out64
rm -f $dec64 $out64
else
local buff=""
for buff in $(awk -v B64="$CODE" '{while(length()){split(substr($0,1,4),a,"");$0=substr($0,5);t=0;for(i=3;i>=0;i--){z=1;for(p=0;p<6*i;p++)z=z*2;t=t+z*((a[4-i]=="=")?0:index(B64,a[4-i])-1)}for(i=2;i>=0;i--)if(a[4-i]!="="){y=1;for(p=0;p<8*i;p++)y=y*2;printf("\\x%x",t/y);t%=y}}printf"\n"}');do printf "$buff"; done
fi
}

   

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
16 [报告]
发表于 2015-12-28 18:14 |只看该作者
谢谢您的帮助!


回复 14# songyc_2015


   

论坛徽章:
22
处女座
日期:2014-10-11 13:33:292015亚冠之塔什干火车头
日期:2015-07-20 19:59:042015亚冠之塔什干火车头
日期:2015-07-26 10:59:31程序设计版块每日发帖之星
日期:2015-08-05 06:20:00每日论坛发贴之星
日期:2015-08-05 06:20:00程序设计版块每日发帖之星
日期:2015-08-07 06:20:00每日论坛发贴之星
日期:2015-08-07 06:20:002015亚冠之阿尔纳斯尔
日期:2015-10-01 15:23:28白银圣斗士
日期:2015-12-07 17:17:06操作系统版块每日发帖之星
日期:2015-12-27 06:20:002015亚冠之广州富力
日期:2015-07-08 15:48:31程序设计版块每日发帖之星
日期:2015-06-11 22:20:00
17 [报告]
发表于 2015-12-28 18:53 |只看该作者
本帖最后由 聆雨淋夜 于 2015-12-28 18:56 编辑
  1. awk -vRS='#-+DEFINITIONS-+\n' 'NR==2{a=$0}NR>FNR&&FNR==2{$0=RT""a""RT}NR>FNR{printf $0}' new.def  man.sh
复制代码
  1. # main.sh
  2. #
  3. #-----------------------DEFINITIONS-----------------------------
  4. host1=www.google.com
  5. host2=www.yahoo.com.cn
  6. #-----------------------DEFINITIONS-----------------------------
  7. for i in $(seq 3); do
  8. [ ! "A"$(eval echo 'host$i) = "A" ] && echo "host$i is $(eval echo 'host$i)"
  9. done
复制代码

论坛徽章:
18
辰龙
日期:2014-05-21 21:01:4115-16赛季CBA联赛之深圳
日期:2016-12-23 13:51:3815-16赛季CBA联赛之北控
日期:2016-11-28 18:26:3815-16赛季CBA联赛之佛山
日期:2016-11-03 11:18:5815-16赛季CBA联赛之辽宁
日期:2016-07-10 16:09:4115-16赛季CBA联赛之江苏
日期:2016-02-20 23:09:202015亚冠之塔什干棉农
日期:2015-08-17 19:49:492015年亚洲杯之日本
日期:2015-04-30 01:24:342015年亚洲杯之约旦
日期:2015-04-01 00:37:182015年亚洲杯之沙特阿拉伯
日期:2015-03-02 15:55:40处女座
日期:2014-05-25 10:34:0020周年集字徽章-年
日期:2023-04-23 11:17:52
18 [报告]
发表于 2015-12-28 20:51 |只看该作者
谢谢您的帮助!
回复 17# 聆雨淋夜


   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-12-21 06:20:00平安夜徽章
日期:2015-12-26 00:06:30
19 [报告]
发表于 2015-12-29 10:50 |只看该作者

年底了,需要换工作么?我们是武汉诚迈科技,诚招安卓开发,安卓多媒体各类人才,待遇丰厚,有换工作的亲朋好友都可以介绍回复 3# jason680


   

论坛徽章:
2
数据库技术版块每日发帖之星
日期:2015-12-21 06:20:00平安夜徽章
日期:2015-12-26 00:06:30
20 [报告]
发表于 2015-12-29 10:50 |只看该作者

年底了,需要换工作么?我们是武汉诚迈科技,诚招安卓开发,安卓多媒体各类人才,待遇丰厚,有换工作的亲朋好友都可以介绍
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP