亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区

  免費注冊 查看新帖 |

Chinaunix

  平臺 論壇 博客 文庫
12下一頁
最近訪問板塊 發(fā)新帖
查看: 3191 | 回復: 13
打印 上一主題 下一主題

[文本處理] 請求:sed文本塊處理 [復制鏈接]

論壇徽章:
1
跳轉到指定樓層
1 [收藏(0)] [報告]
發(fā)表于 2015-07-28 14:12 |只看該作者 |倒序瀏覽
本帖最后由 guobaofu 于 2015-07-28 14:38 編輯

現(xiàn)在有這樣一個文件,名為cndev.pp的puppet文件。我的要求:
1.判斷如果這個文件node{}的結構體里包含 include ntp,將這行文本刪除
2.在每個node{}的結構體里的尾部追加一行 include ntp ,include ntp前有兩個空格


例子:

node 'cnwebadev02.tls.ad' {
#  class {'apache': server_type          => 'cnwebtest', adm_url             => 'cntestadm1', url      => 'cntest1', rproxy_ip => '10.91.27.89'}
#  class {'tlsconnect': server_type      => 'cnwebtest'}
#  class {'syslog': server_type          => 'cnwebtest'}
  class {'zabbix': roles                 => 'linux, apache, dev', ntp_server => '10.91.18.200', server => 'cnmon01.tls.ad'}
  class {'munin': roles                  => 'apache'}
#  class {'openssl': server_type         => 'test'}
  class {'fusioninventory': glpi_server_ip => 'cnasi01.tls.ad'}
  include php
}

源文件:
cat cndev.pp


##############################################
##               CN DEV                     ##
##############################################

#include basenode

################ CNWEBTEST ###################

node 'cnwebadev02.tls.ad' {
#  class {'apache': server_type          => 'cnwebtest', adm_url             => 'cntestadm1', url      => 'cntest1', rproxy_ip => '10.91.27.89'}
#  class {'tlsconnect': server_type      => 'cnwebtest'}
#  class {'syslog': server_type          => 'cnwebtest'}
  class {'zabbix': roles                 => 'linux, apache, dev', ntp_server => '10.91.18.200', server => 'cnmon01.tls.ad'}
  class {'munin': roles                  => 'apache'}
#  class {'openssl': server_type         => 'test'}
  class {'fusioninventory': glpi_server_ip => 'cnasi01.tls.ad'}
}

node 'cnwebadev03.tls.ad' {
#  class {'apache': server_type          => 'cnwebtest', adm_url             => 'cntestadm1', url      => 'cntest1', rproxy_ip => '10.91.27.89'}
#  class {'tlsconnect': server_type      => 'cnwebtest'}
#  class {'syslog': server_type          => 'cnwebtest'}
  class {'zabbix': roles                 => 'linux, apache, dev', ntp_server => '10.91.18.200', server => 'cnmon01.tls.ad'}
  class {'munin': roles                  => 'apache'}
#  class {'openssl': server_type         => 'test'}
  class {'fusioninventory': glpi_server_ip => 'cnasi01.tls.ad'}
}

############ CNDBTEST ########################

node 'cndbdev02.tls.ad' {
#  class {'syslog': server_type => 'cndbtest'}
#  class {'postgres': server_type => 'testdb'}
  class {'zabbix': roles => 'postgres, linux, dev', ntp_server => '10.91.18.200', server     => 'cnmon01.tls.ad'}
  class {'munin': roles => 'postgresql'}
#  class {'openssl': server_type => 'test'}
  class {'fusioninventory': glpi_server_ip => 'cnasi01.tls.ad'}
}

node 'cndbdev03.tls.ad' {
#  class {'syslog': server_type => 'cndbtest'}
#  class {'postgres': server_type => 'testdb'}
  class {'zabbix': roles => 'postgres, linux, dev', ntp_server => '10.91.18.200', server     => 'cnmon01.tls.ad'}
  class {'munin': roles => 'postgresql'}
#  class {'openssl': server_type => 'test'}
  class {'fusioninventory': glpi_server_ip => 'cnasi01.tls.ad'}
}

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
2 [報告]
發(fā)表于 2015-07-28 14:43 |只看該作者
回復 1# guobaofu


    按塊處理文件,還是上 awk/perl 吧,用 sed 太麻煩了:

  1. perl -nE ' if (/^node/ .. /^}/) { if (! /^\s*include ntp$/ and ! /^}$/) { print } elsif ( /}/ ) { print "  include ntp\n}\n" } } else { print } ' cndev.pp
復制代碼

評分

參與人數(shù) 1信譽積分 +5 收起 理由
guobaofu + 5

查看全部評分

論壇徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉雞
日期:2014-07-31 15:09:562015亞冠之本尤德科
日期:2015-05-19 09:27:382015亞冠之卡爾希納薩夫
日期:2015-06-20 10:30:212015亞冠之阿爾納斯爾
日期:2015-07-01 20:46:062015亞冠之城南
日期:2015-07-15 21:12:00
3 [報告]
發(fā)表于 2015-07-28 14:49 |只看該作者
  1. sed '/include ntp/d;s/^}$/  include ntp\n&/' test.txt
復制代碼

評分

參與人數(shù) 1信譽積分 +5 收起 理由
guobaofu + 5

查看全部評分

論壇徽章:
95
程序設計版塊每日發(fā)帖之星
日期:2015-09-05 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-17 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-09-18 06:20:002015亞冠之阿爾艾因
日期:2015-09-18 10:35:08月度論壇發(fā)貼之星
日期:2015-09-30 22:25:002015亞冠之阿爾沙巴布
日期:2015-10-03 08:57:39程序設計版塊每日發(fā)帖之星
日期:2015-10-05 06:20:00每日論壇發(fā)貼之星
日期:2015-10-05 06:20:002015年亞冠紀念徽章
日期:2015-10-06 10:06:482015亞冠之塔什干棉農(nóng)
日期:2015-10-19 19:43:35程序設計版塊每日發(fā)帖之星
日期:2015-10-21 06:20:00每日論壇發(fā)貼之星
日期:2015-09-14 06:20:00
4 [報告]
發(fā)表于 2015-07-28 14:54 |只看該作者
回復 3# lifayi2008


    oops,想多了

論壇徽章:
16
IT運維版塊每日發(fā)帖之星
日期:2015-08-24 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2015-10-14 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-10-25 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-11-06 06:20:00IT運維版塊每日發(fā)帖之星
日期:2015-12-10 06:20:00平安夜徽章
日期:2015-12-26 00:06:302016猴年福章徽章
日期:2016-02-18 15:30:34IT運維版塊每日發(fā)帖之星
日期:2016-04-15 06:20:00IT運維版塊每日發(fā)帖之星
日期:2016-05-21 06:20:00綜合交流區(qū)版塊每日發(fā)帖之星
日期:2016-08-16 06:20:002015七夕節(jié)徽章
日期:2015-08-21 11:06:17IT運維版塊每日發(fā)帖之星
日期:2015-08-14 06:20:00
5 [報告]
發(fā)表于 2015-07-28 15:22 |只看該作者
把Node和module直接關聯(lián)不是最佳的做法,最好用
module ==>profile ==>role ==>node(一個node對應1個role)

那么你添加/刪除一個module,只需要改profile,role里面都不需要改動。

假如你有200個Node,每個都需要添加一個新的module,你需要加200次。

但是你200個node有200個role, 假如role里面調用的profile不變,那么你只需要更新profile的module list...

論壇徽章:
1
6 [報告]
發(fā)表于 2015-07-28 15:32 |只看該作者
本帖最后由 guobaofu 于 2015-07-28 15:50 編輯

回復 3# lifayi2008


  已測試,好用。辛苦了,哥們。。

能否給個例子讓我看看

QQ: 493670120

論壇徽章:
1
7 [報告]
發(fā)表于 2015-07-28 15:33 |只看該作者
回復 3# lifayi2008


哥們,你的sed也好用。。謝謝喲~~

   

論壇徽章:
1
8 [報告]
發(fā)表于 2015-07-28 15:35 |只看該作者
回復 5# expert1

謝謝仁兄的指導,我也上剛剛學習,以后puppet不明白和有疑難的時候,請幫助。。




   

論壇徽章:
9
寅虎
日期:2013-12-02 12:49:22巨蟹座
日期:2014-07-18 18:13:34卯兔
日期:2014-07-25 14:43:08子鼠
日期:2014-07-26 10:10:51酉雞
日期:2014-07-31 15:09:562015亞冠之本尤德科
日期:2015-05-19 09:27:382015亞冠之卡爾希納薩夫
日期:2015-06-20 10:30:212015亞冠之阿爾納斯爾
日期:2015-07-01 20:46:062015亞冠之城南
日期:2015-07-15 21:12:00
9 [報告]
發(fā)表于 2015-07-28 15:49 |只看該作者
我這是偷懶的寫法,搞計算機想多點沒壞處 回復 4# MMMIX


   

論壇徽章:
20
卯兔
日期:2015-01-26 22:05:142015亞冠之薩濟拖拉機
日期:2015-09-10 15:15:282015亞冠之阿爾希拉爾
日期:2015-09-25 17:37:53程序設計版塊每日發(fā)帖之星
日期:2015-10-03 06:20:00程序設計版塊每日發(fā)帖之星
日期:2015-12-09 06:20:00CU十四周年紀念徽章
日期:2015-12-17 09:07:15程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:34程序設計版塊每日發(fā)帖之星
日期:2015-12-25 06:20:342015亞冠之廣州富力
日期:2015-08-27 19:29:56每日論壇發(fā)貼之星
日期:2015-08-26 06:20:002015亞冠之阿爾希拉爾
日期:2015-05-18 17:26:27
10 [報告]
發(fā)表于 2015-07-28 20:38 |只看該作者
本帖最后由 songyc_2015 于 2015-07-28 23:33 編輯

回復 1# guobaofu
感覺需求不明確,第1點把含有“include ntp”的行刪除了,第2點又把“include ntp”加回來?還是不加回來?又加回來不是多此一舉么?

不加回來(即刪除):
  1. sed '/node/{:1;$b2;N;/\n}/!b1;:2;s#\n *include ntp *##;t;s#}$#  include ntp\n}#}' file
復制代碼
加回來(即不刪除):
  1. sed '/node/{:1;$b2;N;/\n}/!b1;:2;/include ntp/b;s#}$#  include ntp\n}#}' file
復制代碼
剛開始我是理解錯誤的,以為node{}存在““include ntp”“則刪除這個node:
  1. sed '/node/{:1;$b2;N;/\n}/!b1;:2;/include ntp/d;s#}$#  include ntp\n}#}' file
復制代碼
您需要登錄后才可以回帖 登錄 | 注冊

本版積分規(guī)則 發(fā)表回復

  

北京盛拓優(yōu)訊信息技術有限公司. 版權所有 京ICP備16024965號-6 北京市公安局海淀分局網(wǎng)監(jiān)中心備案編號:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年舉報專區(qū)
中國互聯(lián)網(wǎng)協(xié)會會員  聯(lián)系我們:huangweiwei@itpub.net
感謝所有關心和支持過ChinaUnix的朋友們 轉載本站內(nèi)容請注明原作者名及出處

清除 Cookies - ChinaUnix - Archiver - WAP - TOP