用linux命令解決小需求

背景描述

前段時(shí)間,接到一個(gè)小需求:給你少量商家的手機(jī)號(hào),要查出系統(tǒng)對(duì)應(yīng)用戶id。

這種需求其實(shí)很簡(jiǎn)單,有現(xiàn)成的resetful接口,直接請(qǐng)求返回結(jié)果,解析其中的id信息拿出來就好了。

但是處理起來比較尷尬,專門寫個(gè)腳本有點(diǎn)殺雞用牛刀的感覺,無奈找不到更好的方案,只能先寫個(gè)腳本把需求解決了先。

更優(yōu)雅的方法

周末有時(shí)間,又想起這事情來,這種需求查詢量不大,功能也簡(jiǎn)單,其實(shí)完全可以用一條命令就能解決的。而且之前剛剛看了xargv和sed的基礎(chǔ)用法,處理起來應(yīng)該綽綽有余。

需求重現(xiàn)

給你一批手機(jī),調(diào)用淘寶的接口

http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel=15850781443

查詢這批手機(jī)號(hào)的地區(qū)id。

準(zhǔn)備數(shù)據(jù)

先從網(wǎng)上隨便找20個(gè)手機(jī)號(hào)當(dāng)輸入源

18920211520
13819920502
18070062222
17674077773
17612951295
13631333353
18015028188
13500035477
13762925555
18661778179
18661778177
18866001177
18866001177
18571871877
18903717108
17768699777
15874611777
14576399999
15565556566
18888688888

將這些保存到inputSource文件里。

用xargv拼接請(qǐng)求

cat inputSource | xargs -I {} curl 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}'

過濾curl的結(jié)果

cat inputSource | xargs -I {} curl 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid

這時(shí)卻發(fā)現(xiàn)出現(xiàn)了我們不需要的輸出

######################################################################## 100.0%

網(wǎng)上google一下,發(fā)現(xiàn)可以用--silent參數(shù),于是得到

cat inputSource | xargs -I {} curl --silent 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid

用awk處理字符

先用awk試個(gè)手

cat inputSource | xargs -I {} curl --silent 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid | awk '{print $1}'

把前面的tab符去掉了。

再把單引號(hào)作為字符分隔符來處理:

cat inputSource | xargs -I {} curl --silent 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid | awk 'BEGIN{FS="'"} {print $2}'

不成功,提示等待輸入結(jié)束的單引號(hào),是引入了'的緣故。

既然'有問題,先退一步,換個(gè)字符試試分隔符用的對(duì)不對(duì)。

cat inputSource | xargs -I {} curl --silent 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid | awk 'BEGIN{FS=":"} {print $2}'

用:沒問題,離成功又近了一步。再去google一下,怎么指定單引號(hào)為分隔符。發(fā)現(xiàn)是\047,于是得到最后的命令

cat inputSource | xargs -I {} curl --silent 'http://tcc.taobao.com/cc/json/mobile_tel_segment.htm?tel={}' | grep areaVid | awk 'BEGIN{FS="\047"} {print $2}'

參考資料

xargs命令
How to grep the output of cURL?
AWK 簡(jiǎn)明教程
awk用法小結(jié)

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • linux資料總章2.1 1.0寫的不好抱歉 但是2.0已經(jīng)改了很多 但是錯(cuò)誤還是無法避免 以后資料會(huì)慢慢更新 大...
    數(shù)據(jù)革命閱讀 13,235評(píng)論 2 33
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn),斷路器,智...
    卡卡羅2017閱讀 136,554評(píng)論 19 139
  • 基礎(chǔ)命令 主要的命令和快捷鍵 Linux系統(tǒng)命令由三部分組成:cmd + [options]+[operation...
    485b1aca799e閱讀 1,219評(píng)論 0 0
  • 轉(zhuǎn)載 原文的排版和內(nèi)容都更加友好,并且詳細(xì),我只是在這里貼出了一部分留作自己以后參考和學(xué)習(xí),如希望更詳細(xì)了解AWK...
    XKirk閱讀 3,365評(píng)論 2 25
  • awk介紹awk變量printf命令:實(shí)現(xiàn)格式化輸出操作符awk patternawk actionawk數(shù)組aw...
    哈嘍別樣閱讀 1,737評(píng)論 0 4

友情鏈接更多精彩內(nèi)容