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

Chinaunix

標(biāo)題: 如何使用sed或awk 替換文本中包含有特殊字符//等 內(nèi)容 [打印本頁]

作者: cyyjs123    時(shí)間: 2015-05-20 16:34
標(biāo)題: 如何使用sed或awk 替換文本中包含有特殊字符//等 內(nèi)容
  比如文件shell.ini中包含有如下 一行 abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350"]。
然后想把這行替換為如下格式的: abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350","aa.tp://daylight-clear-data@127.0.0.2:2350","aa.tp://daylight-clear-data@127.0.0.3:2350"]. 其實(shí)主要是多添加了[]中的同一個(gè)內(nèi)容,但ip不同。
求各位大俠,賜教

主要是這個(gè)里邊包含了 //  這符號(hào),經(jīng)常遇到報(bào)    sed: -e expression #1, char 2: unterminated `s' command   的錯(cuò)誤
作者: 破曉丶丘比特    時(shí)間: 2015-05-20 16:55
echo 'abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350"]' |sed -r 's/(abc-efg.*)\[(.*@)([0-9]+\.[0-9]+\.[0-9]+\.)[0-9]+(:2350\")\]/\1\[\2\31\4\,\2\32\4\,\2\33\4\]/'
abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350","aa.tp://daylight-clear-data@127.0.0.2:2350","aa.tp://daylight-clear-data@127.0.0.3:2350"]

是這個(gè)意思么?
作者: ly5066113    時(shí)間: 2015-05-20 17:04
回復(fù) 1# cyyjs123


寫 s 命令的時(shí)候用 #

s#xxx#ooo#
作者: songyc_2015    時(shí)間: 2015-05-20 21:43
回復(fù) 1# cyyjs123
這個(gè)awk寫得比較戳。。。。
  1. awk --re-interval -F'[][]' -vOFS="[" '{s=$2;for(i=2;i<=3;i++){s=s","gensub(/(([0-9]+.){3})[0-9]+/,"\\1"i,1,$2)}$2=s"]";NF-=1}1' file
復(fù)制代碼

作者: zxy877298415    時(shí)間: 2015-05-20 23:07
  1. awk '{match($0,"([^[]+)\\[(.+\\.)([0-9]+)(.+\042)",a);}END{printf a[1]"[";for(i=0;i<=2;i++){printf "%s%d%s",a[2],a[3]+i,a[4];if(i<=1)printf ","}print "]"}' file
復(fù)制代碼
回復(fù) 1# cyyjs123


   
作者: cyyjs123    時(shí)間: 2015-05-21 09:40
回復(fù) 2# 破曉丶丘比特


大俠好厲害。和我預(yù)想的有點(diǎn)出入,我一開始描述不詳細(xì)。在描述下:

如 shell.ini中包含的信息如下:

abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350"]

然后呢,我創(chuàng)建一個(gè)shell腳本,然后執(zhí)行這腳本后呢,shell.ini中的文件內(nèi)容變成了這樣

abc-efg = ["aa.tp://daylight-clear-data@127.0.0.1:2350","aa.tp://daylight-clear-data@127.0.0.2:2350","aa.tp://daylight-clear-data@127.0.0.3:2350"]

腳本的執(zhí)行方式:./shell.sh  ip1  ip2 ip3 shell.ini.也就是說這個(gè)ip不是固定的,每次使用參數(shù)傳進(jìn)去,這樣方便一些

您寫的這個(gè),后面:    /\1\[\2\31\4\,\2\32\4\,\2\33\4\]/'  這部分不明白。使用不知道到如果使用參數(shù)的話,該怎么樣寫呢, 先謝過大俠了
作者: cyyjs123    時(shí)間: 2015-05-21 10:06
回復(fù) 5# zxy877298415

這個(gè)執(zhí)行了一下,返回[0,1,2] ,應(yīng)該不對(duì)

   
作者: cyyjs123    時(shí)間: 2015-05-21 10:07
回復(fù) 4# songyc_2015

執(zhí)行了一次,是實(shí)現(xiàn)了,但是如何 能夠靈活修改 這個(gè) ip值呢,請(qǐng)賜教,多謝了。比如 參數(shù)傳入后,直接由參數(shù)替換這其中的3個(gè)ip。

   
作者: cyyjs123    時(shí)間: 2015-05-21 10:41
回復(fù) 4# songyc_2015

這樣還不行,會(huì)把文中多有 [。。。] 格式 這樣的,都會(huì)復(fù)制修改成三份。


   
作者: lxh9090    時(shí)間: 2015-05-21 13:50
回復(fù) 6# cyyjs123
sed -n 's#\("aa.tp://daylight-clear-data@127.0.0.1:2350"\)#\1,\1,\1#p'  shell.ini 這個(gè)是修改行內(nèi)容的--靈活修改ip坐等大神解答

   
作者: cyyjs123    時(shí)間: 2015-05-21 18:26
終于搞定了。
只需要如下格式即可。原來之前一直沒有對(duì) [和" 這類特殊字符做\ 反斜杠的處理。
sed -i "s/abc-efg = \[\"aa.tp:\/\/daylight-clear-data@127.0.0.1:2350\"\]/abc-efg = \[\"aa.tp:\/\/daylight-clear-data@$1:2350\",\"aa.tp:\/\/daylight-clear-data@$2:2350\",\"aa.tp:\/\/daylight-clear-data@$2:2350\"\]/" $4

但是sed中有哪些這樣的特殊字符必須要加呢,不知道有木有官方說明文檔或者經(jīng)驗(yàn)?zāi)。~!@#$%^&*()_+|{}:"<>?.不知道這其中那些需要。

多謝各位大神了!







作者: jason680    時(shí)間: 2015-05-22 15:22
本帖最后由 jason680 于 2015-05-22 15:27 編輯

回復(fù) 11# cyyjs123

BRE與ERE的差異
http://blog.chinaunix.net/uid-28240115-id-4315669.html

正則表達(dá)式
http://zh.wikipedia.org/zh-cn/%E ... 8%E8%BE%BE%E5%BC%8F
   




歡迎光臨 Chinaunix (http://www.72891.cn/) Powered by Discuz! X3.2