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

Chinaunix

標(biāo)題: awk 替換 求助 [打印本頁]

作者: haofang666777    時(shí)間: 2016-05-25 13:48
標(biāo)題: awk 替換 求助
本帖最后由 haofang666777 于 2016-05-25 13:55 編輯

17|1|2|1463932973|1463932992|5|1463932992,17|1.7|2|1463932992|1463932995|1|1463932995,17|1.7.1|4|1463932995|1463933220
使用awk將所有的 17|替換為 512|
效果如下
512|1|2|1463932973|1463932992|5|1463932992,512|1.7|2|1463932992|1463932995|1|1463932995,512|1.7.1|4|1463932995|1463933220


17| 格式要求,  17開頭 或者17前面為, 并且17后面緊跟一個(gè) |   替換成  512|

具體格式如下

QQ截圖20160525135542.png (4.01 KB, 下載次數(shù): 48)

QQ截圖20160525135542.png

作者: liion631818    時(shí)間: 2016-05-25 14:13
  1. awk '{gsub("^17", "512");gsub(",17\|", ",512|")}1'
復(fù)制代碼
回復(fù) 1# haofang666777


   
作者: haofang666777    時(shí)間: 2016-05-25 14:21
liion631818 發(fā)表于 2016-05-25 14:13
回復(fù) 1# haofang666777


awk "........"
雙引號的怎么寫啊
作者: hz_oracle    時(shí)間: 2016-05-25 14:24
為啥不用sed
作者: haofang666777    時(shí)間: 2016-05-25 14:25
hz_oracle 發(fā)表于 2016-05-25 14:24
為啥不用sed

貼出來只是一部分  
以\tab為分隔符的第26個(gè)域  進(jìn)行單獨(dú)處理
作者: liion631818    時(shí)間: 2016-05-25 14:29
  1. awk "{gsub(\"^17\", \"512\");gsub(\",17\|\", \",512|\")}1"
復(fù)制代碼
回復(fù) 3# haofang666777


   
作者: Riet    時(shí)間: 2016-05-25 14:30
sed -r 's#\<17\>#512#g' a
作者: haofang666777    時(shí)間: 2016-05-25 14:33
liion631818 發(fā)表于 2016-05-25 14:29
回復(fù) 3# haofang666777


不行 。。。。

QQ截圖20160525143305.png (488.45 KB, 下載次數(shù): 38)

QQ截圖20160525143305.png

作者: hz_oracle    時(shí)間: 2016-05-25 14:38
awk '{gsub("^17","512");gsub(",17",",512")}1' test.txt   
不知道awk中 "|" 該如何匹配
作者: liion631818    時(shí)間: 2016-05-25 14:42
回復(fù) 8# haofang666777


    哪里不行?把你的輸入貼出來
作者: haofang666777    時(shí)間: 2016-05-25 14:43
liion631818 發(fā)表于 2016-05-25 14:42
回復(fù) 8# haofang666777


在截圖里有啊

src_enterprise_id=17
dst_enterprise_id=512
i=26

cat  /tmp/cdr_ib_3000006.txt | grep "localhost.localdomain-1463932973.1896" | awk "BEGIN{FS=OFS="\t"}{gsub(\"^${src_enterprise_id}\|\",\"${dst_enterprise_id}|\",\$i)}1"
作者: liion631818    時(shí)間: 2016-05-25 14:53
回復(fù) 11# haofang666777


    \$i ---- 這個(gè)是錯(cuò)誤的。\$$i

你用-v傳參數(shù)吧,不要搞雙引號。
作者: hz_oracle    時(shí)間: 2016-05-25 14:54
我去請教了大神:awk '{gsub("^17\\|","512\|");gsub(",17\\|",",512\|")}1' test.txt
但是不理解為啥前面兩個(gè)轉(zhuǎn)譯符,后面一個(gè)轉(zhuǎn)譯符~~
作者: hz_oracle    時(shí)間: 2016-05-25 14:54
我去請教了大神:awk '{gsub("^17\\|","512\|");gsub(",17\\|",",512\|")}1' test.txt
但是不理解為啥前面兩個(gè)轉(zhuǎn)譯符,后面一個(gè)轉(zhuǎn)譯符~~
作者: jason680    時(shí)間: 2016-05-25 14:57
$ awk '{$0=gensub("(^|[,|])17([,|])","\\1512\\2","g",$0)}1' FILE
512|1|2|1463932973|1463932992|5|1463932992,512|1.7|2|1463932992|1463932995|1|1463932995,512|1.7.1|4|1463932995|1463933220

作者: haofang666777    時(shí)間: 2016-05-25 15:01
hz_oracle 發(fā)表于 2016-05-25 14:54
我去請教了大神:awk '{gsub("^17\\|","512\|");gsub(",17\\|",",512\|")}1' test.txt
但是不理解為啥前面兩 ...


我也不理解 不過搞定了  thanks

awk -v src_enterprise_id=17 -v dst_enterprise_id=512 'BEGIN{FS=OFS="\t"}{gsub("^${src_enterprise_id}\\|","${dst_enterprise_id}\|");gsub(",17\\|",",512\|")}1'
作者: liion631818    時(shí)間: 2016-05-25 15:03
回復(fù) 13# hz_oracle


    用雙引號的時(shí)候要兩個(gè),單引號用一個(gè)就可以了

命令行的評價(jià)(evaluation)
下面是C shell 解釋命令行的順序:
1. 歷史替換
2. 分裂詞(包括特殊字符)
3. 更新歷史表
4. 解釋單引號(') 和 雙引號(")
5. 別名替換
6. 輸入和輸出的重定向(如 > < 和 |)
7. 變量替換
8. 命令替換
9. 文件名擴(kuò)展
(Bourne shell 的解釋順序本質(zhì)上是一樣的,除了它不執(zhí)行歷史替換和別名替換之外)

作者: hz_oracle    時(shí)間: 2016-05-25 15:53
回復(fù) 17# liion631818


    替換的后面 只用了一個(gè)\ 轉(zhuǎn)譯符,也是雙引號啊。這是為啥?




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