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

  免費(fèi)注冊 查看新帖 |

Chinaunix

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

[文本處理] 文本替換求助-變量定義替換 [復(fù)制鏈接]

論壇徽章:
18
辰龍
日期:2014-05-21 21:01:4115-16賽季CBA聯(lián)賽之深圳
日期:2016-12-23 13:51:3815-16賽季CBA聯(lián)賽之北控
日期:2016-11-28 18:26:3815-16賽季CBA聯(lián)賽之佛山
日期:2016-11-03 11:18:5815-16賽季CBA聯(lián)賽之遼寧
日期:2016-07-10 16:09:4115-16賽季CBA聯(lián)賽之江蘇
日期:2016-02-20 23:09:202015亞冠之塔什干棉農(nóng)
日期: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
跳轉(zhuǎn)到指定樓層
1 [收藏(0)] [報(bào)告]
發(fā)表于 2016-07-10 16:04 |只看該作者 |倒序?yàn)g覽
5可用積分
[ 本帖最后由 bikkuri 于 2016-07-10 16:05 編輯 ]

大家好,我有一個(gè)問題請教大家。
有兩個(gè)文本如下:
第一個(gè)文本my.def:
#-----------------------DEFINITIONS-----------------------------

host1=www.sina.com.cn
host2=www.netease.com
host3=www.baidu.com

#-----------------------DEFINITIONS-----------------------------

第二個(gè)文本my.profile:
#! /bin/sh
# my.profile
host1=www.yahoo.com
host3=www.google.com
host4=www.taobao.com
test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done

希望將第二個(gè)文本中與第一個(gè)文本中變量名相同的變量定義按照第一個(gè)文本中的內(nèi)容進(jìn)行更新。
希望處理后得到如下文本:
#! /bin/sh
# my.profile
host1=www.sina.com.cn
host3=www.baidu.com
host4=www.taobao.com
test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done

謝謝大家!

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
2 [報(bào)告]
發(fā)表于 2016-07-11 11:09 |只看該作者
本帖最后由 關(guān)陰月飛 于 2016-07-11 11:10 編輯
  1. cat my.profile
  2. #! /bin/bash
  3. # my.profile

  4. . /ur_path/my.def   
  5. host1=${host1:-www.yahoo.com}
  6. host3=${host3:-www.google.com}
  7. host4=${host4:-www.taobao.com}

  8. test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
  9. for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done
復(fù)制代碼

論壇徽章:
39
辰龍
日期:2013-08-21 15:45:192015亞冠之廣州富力
日期:2015-05-12 16:34:52亥豬
日期:2015-03-03 17:22:00申猴
日期:2015-03-03 17:21:37未羊
日期:2014-10-10 13:45:41戌狗
日期:2014-06-17 09:53:29巨蟹座
日期:2014-06-12 23:17:17雙魚座
日期:2014-06-10 12:42:44寅虎
日期:2014-06-09 12:52:172015亞冠之卡爾希納薩夫
日期:2015-05-24 15:24:35黃金圣斗士
日期:2015-12-02 17:25:0815-16賽季CBA聯(lián)賽之吉林
日期:2017-06-24 16:43:52
3 [報(bào)告]
發(fā)表于 2016-07-11 11:12 |只看該作者
  1. cat my.profile
  2. #! /bin/sh
  3. # my.profile

  4. . /ur_path/my.def
  5. host1=${host1:-www.yahoo.com}
  6. host3=${host3:-www.google.com}
  7. host4=${host4:-www.taobao.com}

  8. test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
  9. for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done
復(fù)制代碼

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
4 [報(bào)告]
發(fā)表于 2016-07-11 11:48 |只看該作者
  1. perl -i'.bak' -F/=/ -ne '$k=$F[0];$v=$F[-1];if(@ARGV){$h{$k}=$v if(@F==2);next}s/$v/$h{$k}/ if(@F==2&&exists($h{$k}));print' a b
復(fù)制代碼
$ cat b
#! /bin/sh
# my.profile
host1=www.sina.com.cn
host3=www.baidu.com
host4=www.taobao.com
test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
5 [報(bào)告]
發(fā)表于 2016-07-11 11:50 |只看該作者
  1. perl -i'.bak' -F/=/ -ne '$k=$F[0];$v=$F[-1];if(@ARGV){$h{$k}=$v if(@F==2);next}s/$v/$h{$k}/ if(@F==2&&exists($h{$k}));print' my.def my.profile
復(fù)制代碼
$ cat my.profile
#! /bin/sh
# my.profile
host1=www.sina.com.cn
host3=www.baidu.com
host4=www.taobao.com
test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
6 [報(bào)告]
發(fā)表于 2016-07-11 11:51 |只看該作者
  1. perl -i'.bak' -F/=/ -ne '$k=$F[0];$v=$F[-1];if(@ARGV){$h{$k}=$v if(@F==2);next}s/$v/$h{$k}/ if(@F==2&&exists($h{$k}));print' my.def my.profile
復(fù)制代碼
$ cat my.profile
#! /bin/sh
# my.profile
host1=www.sina.com.cn
host3=www.baidu.com
host4=www.taobao.com
test_ping() { echo "$(ping -c 3 $1 |grep avg|cut -d "/" -f4|cut -d "." -f1)" ; }
for host in $host1 $host3 $host4; do echo "$host: $(test_ping $host)"; done

論壇徽章:
307
程序設(shè)計(jì)版塊每周發(fā)帖之星
日期:2016-04-08 00:41:33操作系統(tǒng)版塊每日發(fā)帖之星
日期:2015-09-02 06:20:00每日論壇發(fā)貼之星
日期:2015-09-02 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-04 06:20:00每日論壇發(fā)貼之星
日期:2015-09-04 06:20:00每周論壇發(fā)貼之星
日期:2015-09-06 22:22:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-09 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-19 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-20 06:20:00每日論壇發(fā)貼之星
日期:2015-09-20 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-22 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-24 06:20:00
7 [報(bào)告]
發(fā)表于 2016-07-11 11:54 |只看該作者
本帖最后由 sunzhiguolu 于 2016-07-11 11:55 編輯

我都回了好幾遍了, 全都沒了. 啥情況? 吃貼機(jī)啊!

論壇徽章:
28
15-16賽季CBA聯(lián)賽之八一
日期:2016-02-22 19:10:4215-16賽季CBA聯(lián)賽之深圳
日期:2016-12-01 10:34:0415-16賽季CBA聯(lián)賽之新疆
日期:2016-12-07 10:24:2915-16賽季CBA聯(lián)賽之同曦
日期:2016-12-15 12:06:43CU十四周年紀(jì)念徽章
日期:2016-12-18 13:03:4415-16賽季CBA聯(lián)賽之吉林
日期:2017-01-03 15:52:2515-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-04 14:58:2415-16賽季CBA聯(lián)賽之遼寧
日期:2017-01-15 09:42:512016科比退役紀(jì)念章
日期:2017-02-06 17:21:50黑曼巴
日期:2017-02-10 15:46:1215-16賽季CBA聯(lián)賽之上海
日期:2017-03-18 10:14:5415-16賽季CBA聯(lián)賽之青島
日期:2017-03-18 22:00:44
8 [報(bào)告]
發(fā)表于 2016-07-11 12:07 |只看該作者
本帖最后由 moperyblue 于 2016-07-13 14:56 編輯
  1. sed -r '1{x;s#.*#sed \x27/=/!d;s/\\s//g\x27 my.def#e;x};/host[0-9]+=/{G;s/([^=]+=)[^\n]*\n.*\1([^\n]*).*/\1\2/;t;P;d}' my.profile
復(fù)制代碼
  1. sed '/=/!d;s/\s//g' my.def > vals

  2. while read line
  3. do
  4. key=`echo "$line"|awk -F= '{$0=$1}1'`
  5. sed -i '/'"$key"'\s*=/c '"$line"'' my.profile
  6. done < vals

  7. rm vals
復(fù)制代碼

論壇徽章:
2
luobin
日期:2016-06-17 17:46:36lufei
日期:2016-06-17 17:49:16
9 [報(bào)告]
發(fā)表于 2016-07-11 13:18 |只看該作者
awk -F"=" 'NR==FNR&&NF>1{a[$1]=$2}NR>FNR{if(a[$1])$2=a[$1];print $0}' my.def my.profile

論壇徽章:
2
程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-07 06:20:00程序設(shè)計(jì)版塊每日發(fā)帖之星
日期:2015-09-07 06:20:00
10 [報(bào)告]
發(fā)表于 2016-07-11 22:11 |只看該作者
本帖最后由 zy86416779 于 2016-07-11 22:13 編輯

回復(fù) 8# moperyblue
你好,又來打擾了。關(guān)于你的代碼(sed '0,/=/{//h;d};//H;${g;p};d' my.def),有兩點(diǎn)不懂,還望能夠賜教。謝謝了。
第一點(diǎn)
0,/=/:我不太理解這個(gè)的含義。我在網(wǎng)上搜到了關(guān)于對0的解釋,其中也含有1的解釋,但是根據(jù)解釋,我覺得1,/=/應(yīng)該是到host3=的那一行。但是卻不是,不知道是不是我理解的不對。我貼出來網(wǎng)上搜到的解釋和實(shí)驗(yàn)代碼
0,/regexp/
A line number of 0 can be used in an address specification like 0,/regexp/ so that sed will try to match regexp in the first input line too. In other words, 0,/regexp/ is similar to 1,/regexp/, except that if addr2 matches the very first line of input the 0,/regexp/ form will consider it to end the range, whereas the 1,/regexp/ form will match the beginning of its range and hence make the range span up to the second occurrence of the regular expression.
Note that this is the only place where the 0 address makes sense; there is no 0-th line and commands which are given the 0 address in any other way will give an error.
  1. [root@study awksed]# sed -n '0,/=/p' my.def   
  2. #-----------------------DEFINITIONS-----------------------------

  3. host1=xxxxx
  4. [root@study awksed]# sed -n '1,/=/p' my.def  
  5. #-----------------------DEFINITIONS-----------------------------

  6. host1=xxxxx
  7. [root@study awksed]#
復(fù)制代碼
第二點(diǎn)
關(guān)于//h和//H。我在網(wǎng)上沒有搜到//這個(gè)的含義,不知道這個(gè)是什么意思。應(yīng)該不是和s/^$//里面的//含義一樣吧?


   
您需要登錄后才可以回帖 登錄 | 注冊

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

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP