亚洲av成人无遮挡网站在线观看,少妇性bbb搡bbb爽爽爽,亚洲av日韩精品久久久久久,兔费看少妇性l交大片免费,无码少妇一区二区三区
Chinaunix
標(biāo)題:
求個(gè)sed
[打印本頁(yè)]
作者:
waily
時(shí)間:
2012-03-27 09:39
標(biāo)題:
求個(gè)sed
本帖最后由 waily 于 2012-03-27 09:45 編輯
文本如下
.....
subnet 10.10.10.10 mask 255.255.255.0 {
option ....
#....{
pool {
option ...
option ....
}
}
.....
復(fù)制代碼
文本中大量
以subnet .... mask .... {開(kāi)始,以}結(jié)束的配置,
但在{}之內(nèi)還有{},{}是成對(duì)出現(xiàn)的(有可能有注釋掉的行包含{或},注釋掉的可能不成對(duì))
要求按指定網(wǎng)段,比如上述的10.10.10.10(這具有唯一性),把subnet .... mask .... {開(kāi)始的,以}結(jié)束的都刪除
作者:
blackold
時(shí)間:
2012-03-27 09:39
本帖最后由 blackold 于 2012-03-27 13:34 編輯
回復(fù)
9#
waily
try:
sed '/subnet 10\.10\.10\.10/{:n;N;s/#[^\n]*//g;s/{[^{}]*}//g;/{/bn;d}' urfile
復(fù)制代碼
作者:
yuhuohu
時(shí)間:
2012-03-27 09:46
awk我倒是有思路,sed....求高人
作者:
hbmhalley
時(shí)間:
2012-03-27 09:49
能否假設(shè)代碼是縮進(jìn)過(guò)且非惡趣味的?
作者:
hbmhalley
時(shí)間:
2012-03-27 09:55
sed -n '/^subnet 10.10.10.10 mask.*{$/{:1;n;/^\s/b1;d;};p'
復(fù)制代碼
我猜差不多
作者:
waily
時(shí)間:
2012-03-27 09:55
回復(fù)
3#
hbmhalley
不能保證
作者:
waily
時(shí)間:
2012-03-27 09:59
回復(fù)
4#
hbmhalley
sed -n '/^subnet 10.10.10.10 mask.*{$/{:1;n;/^\s/b1;d;};p'
大哥,求解釋
'
/^subnet 10.10.10.10 mask.*{$/是進(jìn)行匹配
{:1;n;---不明白
/^\s/ 再次匹配,但不明白\s
b1;d;};p ---------只看懂p是打印....
作者:
blackold
時(shí)間:
2012-03-27 10:01
回復(fù)
1#
waily
sed '/subnet 10\.10\.10\.10/{:n;N;s/{[^{}]*}//g;/{/bn;d}' urfile
復(fù)制代碼
作者:
yuhuohu
時(shí)間:
2012-03-27 10:24
回復(fù)
7#
blackold
黑哥,求解釋
作者:
waily
時(shí)間:
2012-03-27 10:27
回復(fù)
7#
blackold
黑哥,碰到有注釋的行含有{時(shí)刪不干凈了
作者:
blackold
時(shí)間:
2012-03-27 10:28
回復(fù)
9#
waily
沒(méi)考慮注釋行里也有{}的情況。
作者:
cjaizss
時(shí)間:
2012-03-27 10:31
easy
作者:
blackold
時(shí)間:
2012-03-27 10:34
回復(fù)
8#
yuhuohu
就是正則匹配啊。
作者:
yuhuohu
時(shí)間:
2012-03-27 10:36
回復(fù)
9#
waily
木有事,先用sed刪除一遍,哈哈
作者:
yuhuohu
時(shí)間:
2012-03-27 10:37
回復(fù)
13#
blackold
sed的指令看的很暈,看來(lái)要發(fā)點(diǎn)時(shí)間仔細(xì)的鉆研sed的理論知識(shí)
作者:
ywlscpl
時(shí)間:
2012-03-27 10:39
awk -v net="10.10.10.10" '!n{T=0}/^subnet/&&$2==net{sub(/{ *$/,"");print;n++;T=1}!/ *#/&&/{/{n++}!/ *#/&&/} *$/{n--}!T' file
復(fù)制代碼
作者:
cjaizss
時(shí)間:
2012-03-27 10:51
中午寫(xiě)一個(gè),現(xiàn)在適合準(zhǔn)備吃午飯
作者:
cjaizss
時(shí)間:
2012-03-27 10:52
本帖最后由 cjaizss 于 2012-03-27 10:53 編輯
代碼里試圖解決這樣的情況
subnet 10.10.10.10 mask 255.255.255.0 {
option ....
#....{
pool {
option ...
option ....
}
} subnet 10.10.10.10 mask 255.255.255.0
{
...
}
作者:
yinyuemi
時(shí)間:
2012-03-27 12:42
sed -rn '/subnet 10.10.10.10/{:a;/\{/{x;s/^/#/;x;};/#/{n};/\}/{x;/^#{1}$/;s/#//;x;};n;ba};p'
復(fù)制代碼
作者:
waily
時(shí)間:
2012-03-27 12:54
回復(fù)
12#
blackold
可以了,謝謝!
sed '/subnet 10\.10\.10\.0/{
:n;N;
s/#[^\n]*/g/;
-----------這行的s怎么怪怪的呢?正常不都是s/a/b/g; 把a(bǔ)替換成b嗎,s/a/g/是啥意思呀,黑哥
s/{[^{}]*}//g;
/{/bn;d
}' urlfile
作者:
jiejie455
時(shí)間:
2012-03-27 13:10
本帖最后由 jiejie455 于 2012-03-27 13:15 編輯
和19樓yinyuemi的思路差不多,打點(diǎn)計(jì)數(shù)法,第一次寫(xiě)這么長(zhǎng)的sed, 不知道寫(xiě)的對(duì)不對(duì),忘各位大俠指點(diǎn)。
$ cat data.sed
#!/bin/sed -f
/subnet 10\.10\.10\.10/{
:a
/^[ ]*#/{
n
}
/{/{
x
s/^/\./
x
}
/}/{
x
s/\.//
/^$/{
x
b
}
x
}
n
ba
}
p
復(fù)制代碼
作者:
blackold
時(shí)間:
2012-03-27 13:35
回復(fù)
20#
waily
汗,是我寫(xiě)錯(cuò)了。已更正。
謝謝提醒!
作者:
mpstat
時(shí)間:
2012-03-27 14:02
waily 發(fā)表于 2012-03-27 10:27
回復(fù) 7# blackold
.............
作者:
waily
時(shí)間:
2012-03-27 15:26
謝謝各位
作者:
yuhuohu
時(shí)間:
2012-03-27 15:52
本帖最后由 yuhuohu 于 2012-03-27 19:17 編輯
回復(fù)
2#
blackold
嘗試講解一下黑哥的思路,黑哥請(qǐng)指教。
sed '
/subnet 10\.10\.10\.10/{ #先匹配到subnet 10.10.10.10這樣,然后進(jìn)行下面的處理
:n; #創(chuàng)建名為n的標(biāo)簽
N; #讀入下一行,并追加到當(dāng)前模式空間內(nèi)容的末尾,在兩行之間加入換行符
s/#[^\n]*//g; #把匹配正則表達(dá)式 【#[^\n]*】 的字符串刪除,這樣在注釋中有出現(xiàn){}的都被刪除了
s/{[^{}]*}//g; #把匹配正則表達(dá)式 【{[^{}]*}】 的字符串刪除,這樣就把在subnet....{}內(nèi)成對(duì)出現(xiàn)的{}刪除了
/{/bn; #匹配到{符號(hào),就跳轉(zhuǎn)到標(biāo)簽n處,繼續(xù)處理
d #刪除剩下的內(nèi)容
}' urfile
這里我有點(diǎn)小小的不理解,怎么實(shí)現(xiàn)的跳出這個(gè)標(biāo)簽循環(huán)呢?沒(méi)看見(jiàn)說(shuō)到出現(xiàn)}時(shí)結(jié)束呀
作者:
yuhuohu
時(shí)間:
2012-03-27 16:14
本帖最后由 yuhuohu 于 2012-03-27 16:48 編輯
yinyuemi 發(fā)表于 2012-03-27 12:42
繼續(xù)拆解yinyuemi的代碼
sed -rn '/subnet 10.10.10.10/{:a;/\{/{x;s/^/#/;x;};/#/{n};/\}/{x;/^#{1}$/;s/#//;x;};n;ba};p'
sed -rn '
/subnet 10.10.10.10/ #匹配10.10.10.10
{
:a; #創(chuàng)建標(biāo)簽a
/\{/{ #匹配符號(hào)#
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容
s/^/#/; #在行首加入#符號(hào)(
不太明白為什么要加#
)
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,緩沖區(qū)變成內(nèi)容變成"
#subnet 10.10.10.10 ....
",模式空間內(nèi)容恢復(fù)原樣
}; #
/#/{ #匹配符號(hào)#
n #讀入下一行
}; #
/\}/{ #匹配符號(hào)}
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,緩沖區(qū)變成subnet...的下一行,模式空間"
#subnet 10.10.10.10 ....
"
/^#{1}$/{ #匹配一整行以#符號(hào)開(kāi)始且只有一個(gè)#符號(hào)的行
b #
跳轉(zhuǎn)到標(biāo)簽???
}; #
s/#//; #把第一個(gè)#符號(hào)刪除
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,模式空間內(nèi)容恢復(fù)原樣,
緩沖區(qū)的內(nèi)容??
}; #
n; #讀入下一行
ba #跳轉(zhuǎn)到標(biāo)簽a處
}; #
p' #輸出
我亂了....
作者:
yuhuohu
時(shí)間:
2012-03-27 16:20
回復(fù)
21#
jiejie455
哥們厲害呀,我?guī)缀踉诳刺鞎?shū)了
作者:
waily
時(shí)間:
2012-03-27 17:22
誰(shuí)來(lái)解釋一下yuhuohu在25,26樓留下的疑惑呀,我也想知道啊
作者:
blackold
時(shí)間:
2012-03-27 18:41
回復(fù)
25#
yuhuohu
沒(méi)有 { 時(shí)就跳出了。也就是把里面配對(duì)的{}都清除完了,就跳出。
作者:
yuhuohu
時(shí)間:
2012-03-27 19:16
回復(fù)
29#
blackold
哦,明白了,實(shí)際上sed一直在/subnet 10\.10\.10\.10/這行工作
作者:
yinyuemi
時(shí)間:
2012-03-27 23:42
回復(fù)
26#
yuhuohu
sed -rn '
/subnet 10.10.10.10/ #匹配10.10.10.10
{
:a; #創(chuàng)建標(biāo)簽a
/\{/{
#匹配符號(hào)'{'
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容
s/^/#/; #在行首加入#符號(hào)(不太明白為什么要加#)
--- '#' 可以換成其它字符,這里只是作為一個(gè)標(biāo)記而已。
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,緩沖區(qū)變成內(nèi)容變成"#subnet 10.10.10.10 ....",模式空間內(nèi)容恢復(fù)原樣
}; #
/#/{ #匹配符號(hào)#
n #讀入下一行
}; #
/\}/{ #匹配符號(hào)}
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,緩沖區(qū)變成subnet...的下一行,模式空間"#subnet 10.10.10.10 ...."
/^#{1}$/{ #匹配一整行以#符號(hào)開(kāi)始且只有一個(gè)#符號(hào)的行
b #跳轉(zhuǎn)到標(biāo)簽???
--- b分支后面有l(wèi)abel則強(qiáng)制返回label除,如果沒(méi)有,跳過(guò)后面所有的命令,(if label is omitted, branch to end of script.
)
}; #
s/#//; #把第一個(gè)#符號(hào)刪除
x; #交換暫存緩沖區(qū)和模式空間的內(nèi)容,模式空間內(nèi)容恢復(fù)原樣,緩沖區(qū)的內(nèi)容??
--- 這里是將'#'標(biāo)記交換到hold space,便于下一次提取。
}; #
n; #讀入下一行
ba #跳轉(zhuǎn)到標(biāo)簽a處
}; #
p' #輸出
PS. 請(qǐng)參考
http://www.72891.cn/thread-3613371-1-1.html
http://www.72891.cn/thread-1762006-1-1.html
作者:
cjaizss
時(shí)間:
2012-03-28 08:42
思路就是一直清{}
清到空為止
如果格式混亂些的話(huà),比如可能幾個(gè)并在一起寫(xiě),編程的時(shí)候就麻煩一點(diǎn)
作者:
yuhuohu
時(shí)間:
2012-03-28 09:51
回復(fù)
31#
yinyuemi
謝!仔細(xì)的分析一個(gè)實(shí)例比看10頁(yè)理論還深刻
歡迎光臨 Chinaunix (http://www.72891.cn/)
Powered by Discuz! X3.2