在shell中使用awk sed sort 等命令替換多個(gè)參數(shù)

場(chǎng)景:

用shell腳本首繁,從A文件的獲取URL參數(shù)垛玻,覆蓋B文件的URL

A文件內(nèi)容

http://appldnld.apple.com/ios8.4.1/031-31019-20150812-75169310-3C8F-11E5-BAB2-9B1A3A53DB92/iPad4,8_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31157-20150812-7518D8FA-3C8F-11E5-B354-AD1A3A53DB92/iPad4,9_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31386-20150812-A4FC2602-3C90-11E5-B036-A21D3A53DB92/iPad5,3_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31164-20150812-7519C21A-3C8F-11E5-937E-AF1A3A53DB92/iPad5,4_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31129-20150812-751A3CB8-3C8F-11E5-A8A5-A91A3A53DB92/iPhone4,1_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31186-20150812-751D243C-3C8F-11E5-8E4F-B51A3A53DB92/iPhone5,1_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31065-20150812-7518F132-3C8F-11E5-A96A-A11A3A53DB92/iPhone5,2_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31126-20150812-751B1656-3C8F-11E5-8F6B-A71A3A53DB92/iPhone5,3_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-30941-20150812-7516948C-3C8F-11E5-B90B-951A3A53DB92/iPhone5,4_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31174-20150812-75196C52-3C8F-11E5-8C71-B31A3A53DB92/iPhone6,1_8.4.1_12H321_Restore.ipsw
http://appldnld.apple.com/ios8.4.1/031-31002-20150812-7517E210-3C8F-11E5-A4C6-991A3A53DB92/iPhone6,2_8.4.1_12H321_Restore.ipsw

B文件內(nèi)容

[iPhone6,2]
Name=iPhone 5S
Model=Global
Version=8.4.1
ProductIDs=33589600
URL=http://appldnld.apple.com/ios8.4.1/031-31002-20150812-7517E210-3C8F-11E5-A4C6-991A3A53DB92/iPhone6,2_8.4.1_12H321_Restore.ipsw

[iPhone5,1]
Name=iPhone 5
Model=GSM
Version=8.4.1
ProductIDs=35152
URL=http://appldnld.apple.com/ios8.4.1/031-31186-20150812-751D243C-3C8F-11E5-8E4F-B51A3A53DB92/iPhone5,1_8.4.1_12H321_Restore.ipsw

[iPhone5,2]
Name=iPhone 5
Model=Global
Version=8.4.1
ProductIDs=33589584
URL=http://appldnld.apple.com/ios8.4.1/031-31065-20150812-7518F132-3C8F-11E5-A96A-A11A3A53DB92/iPhone5,2_8.4.1_12H321_Restore.ipsw

方案:

看到兩個(gè)文件中的URL都包含唯一的iOS設(shè)備名稱冀痕。以它作為主鍵來匹配URL甩卓。用awk分別取出A填渠,B文件的對(duì)應(yīng)URL施掏,用sed做替換帖烘。

步驟:

  1. 用awk 提取A亮曹,B文件中包含”iPhone5,1 “這個(gè)字符的URL
    awk 的用法很簡(jiǎn)單 awk ‘/匹配規(guī)則/ {print(跟C語言類似的格式化輸出)} ’ + 數(shù)據(jù)源文件

awk '/iPhone5,1/ {printf("iPhone51_expect=%s", $1)}' A.txt

awk '/iPhone5,1/ && /ipsw/ {printf("iPhone51_target=%s", $1)}' B.txt
這里因?yàn)锽文件iPhone5,1 會(huì)同時(shí)匹配出URL所在行的數(shù)據(jù)和設(shè)備名所在行的數(shù)據(jù),所以增加一個(gè)/ipsw/的過濾秘症,雙重匹配

  1. 用sed替換

sed -i '' "s@$iPhone51_target@URL=$iPhone51_expect@g" B.txt
這里注意幾點(diǎn):

* 用@符合作為sed替換命令的分隔符
* 用 -i 命令將替換結(jié)果寫入文件
* -i 之后的’’ 表示不生成備份文件照卦,解決報(bào)錯(cuò)問題
  1. 等替換完成后,可以再使用awk命令將兩個(gè)文件的URL數(shù)據(jù)都提取出來并排序乡摹。然后用diff命令驗(yàn)證數(shù)據(jù)是否一致

get iOSCfg ipsw list

cat B.txt | grep ipsw | grep 8.4.1 | sort -b -u | sort -k 1.93 | sed 's/<string>//g' | sed 's/</string>//g' | grep -v protected | sed 's/URL=http/http/g' > pc_ipsw_list.txt

get mac plist ipsw list

cat A.txt | sed 's/<string>http/http/g' | sed 's/</string>/ /g' | awk '/8.4.1/' |grep ipsw | sed 's/^[[:space:]]//' | sed 's/[ \t]$//g' | sort -k 1.93 > mac_ipsw_list.txt

diff mac_ipsw_list.txt pc_ipsw_list.txt

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末役耕,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子聪廉,更是在濱河造成了極大的恐慌瞬痘,老刑警劉巖,帶你破解...
    沈念sama閱讀 206,311評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件板熊,死亡現(xiàn)場(chǎng)離奇詭異框全,居然都是意外死亡,警方通過查閱死者的電腦和手機(jī)干签,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,339評(píng)論 2 382
  • 文/潘曉璐 我一進(jìn)店門津辩,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事喘沿≌⒍龋” “怎么了?”我有些...
    開封第一講書人閱讀 152,671評(píng)論 0 342
  • 文/不壞的土叔 我叫張陵蚜印,是天一觀的道長(zhǎng)莺禁。 經(jīng)常有香客問我,道長(zhǎng)晒哄,這世上最難降的妖魔是什么睁宰? 我笑而不...
    開封第一講書人閱讀 55,252評(píng)論 1 279
  • 正文 為了忘掉前任肪获,我火速辦了婚禮寝凌,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘孝赫。我一直安慰自己较木,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,253評(píng)論 5 371
  • 文/花漫 我一把揭開白布青柄。 她就那樣靜靜地躺著伐债,像睡著了一般。 火紅的嫁衣襯著肌膚如雪致开。 梳的紋絲不亂的頭發(fā)上峰锁,一...
    開封第一講書人閱讀 49,031評(píng)論 1 285
  • 那天,我揣著相機(jī)與錄音双戳,去河邊找鬼虹蒋。 笑死,一個(gè)胖子當(dāng)著我的面吹牛飒货,可吹牛的內(nèi)容都是我干的魄衅。 我是一名探鬼主播,決...
    沈念sama閱讀 38,340評(píng)論 3 399
  • 文/蒼蘭香墨 我猛地睜開眼塘辅,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼晃虫!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起扣墩,我...
    開封第一講書人閱讀 36,973評(píng)論 0 259
  • 序言:老撾萬榮一對(duì)情侶失蹤哲银,失蹤者是張志新(化名)和其女友劉穎,沒想到半個(gè)月后呻惕,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體荆责,經(jīng)...
    沈念sama閱讀 43,466評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 35,937評(píng)論 2 323
  • 正文 我和宋清朗相戀三年蟆融,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了草巡。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 38,039評(píng)論 1 333
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖山憨,靈堂內(nèi)的尸體忽然破棺而出查乒,到底是詐尸還是另有隱情,我是刑警寧澤郁竟,帶...
    沈念sama閱讀 33,701評(píng)論 4 323
  • 正文 年R本政府宣布玛迄,位于F島的核電站,受9級(jí)特大地震影響棚亩,放射性物質(zhì)發(fā)生泄漏蓖议。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,254評(píng)論 3 307
  • 文/蒙蒙 一讥蟆、第九天 我趴在偏房一處隱蔽的房頂上張望勒虾。 院中可真熱鬧,春花似錦瘸彤、人聲如沸修然。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,259評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽愕宋。三九已至,卻和暖如春结榄,著一層夾襖步出監(jiān)牢的瞬間中贝,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 31,485評(píng)論 1 262
  • 我被黑心中介騙來泰國打工臼朗, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留邻寿,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,497評(píng)論 2 354
  • 正文 我出身青樓依溯,卻偏偏與公主長(zhǎng)得像老厌,于是被迫代替她去往敵國和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子黎炉,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,786評(píng)論 2 345

推薦閱讀更多精彩內(nèi)容

  • sed與awk實(shí)例 文本間隔 在每一行后面增加一空行 將原來的所有空行刪除并在每一行后面增加一空行枝秤。這樣在輸出的文...
    stuha閱讀 1,883評(píng)論 0 21
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,188評(píng)論 2 25
  • netstat -tnlp|egrep -i "$1"|awk {'print $7'}|awk -F'/' '{...
    JerichoYu閱讀 996評(píng)論 0 0
  • 1、Nginx日志分析日志格式:'$remote_addr - $remote_user [$time_local...
    運(yùn)維前線閱讀 704評(píng)論 0 4
  • 本文承接之前寫的三十分鐘學(xué)會(huì)AWK一文缭乘,在學(xué)習(xí)完AWK之后沐序,趁熱打鐵又學(xué)習(xí)了一下SED,不得不說這兩個(gè)工具真的堪稱...
    mylxsw閱讀 4,382評(píng)論 3 74