在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

那些常用的 Unix 命令,你不知道的功能!

Linux愛好者 ? 來源:YXQ ? 2019-08-11 10:04 ? 次閱讀

我逐漸意識(shí)到,Unix 的命令行工具可以解決一切與文字處理有關(guān)的問題。我來講一個(gè)我遇到過的問題,以及怎樣用 Unix 命令行工具解決的。

問題

我在做我的碩士論文研究。像許多統(tǒng)計(jì)學(xué)家一樣,我需要進(jìn)行許多模擬。首先我利用一些數(shù)字的種子(以保證可復(fù)現(xiàn)性)來模擬了一些數(shù)據(jù),然后在這些數(shù)據(jù)上用一個(gè)算法來估算一些東西。每次運(yùn)行模擬時(shí)我都會(huì)創(chuàng)建一些文件,大概像下面這樣:

dataset-directory/0001_data.csvdataset-directory/0001_A.csv

但有時(shí)候運(yùn)行會(huì)失敗。這并不是太嚴(yán)重,模擬失敗了我只需要運(yùn)行另一個(gè)模擬就好了。比如,0001 這個(gè)數(shù)據(jù)我成功地運(yùn)行了算法 A。因此我想在 0001 數(shù)據(jù)上使用算法 B。但我真正需要的是跟蹤哪些命令失敗了。

在許多數(shù)據(jù)上運(yùn)行算法 A 之后,我得到了一大堆文件,像這樣:

dataset-directory/0001_data.csvdataset-directory/0001_A.csvdataset-directory/0002_data.csvdataset-directory/0002_A.csvdataset-directory/0003_data.csvdataset-directory/0003_A.csvdataset-directory/0004_data.csvdataset-directory/0005_data.csvdataset-directory/0005_A.csvdataset-directory/0006_data.csvdataset-directory/0006_A.csvdataset-directory/0007_data.csvdataset-directory/0007_A.csvdataset-directory/0008_data.csvdataset-directory/0009_data.csvdataset-directory/0009_A.csv...dataset-directory/0499_A.csv

通過觀察得知算法 A 在數(shù)據(jù) 0004 和 0008 上的結(jié)果不存在。那么,怎樣才能列出所有 A 沒有成功的數(shù)據(jù)呢?

我當(dāng)然可以手工來做,但那樣很容易出錯(cuò),而且很麻煩。要是能寫程序完成就最好了!

解決方案

簡單地來說,那些沒有成功的就是從0001到0500的數(shù)字中去掉那些成功了的數(shù)字。而得到數(shù)字列表的最好命令就是 seq:

$>seq1012345678910

(如果只給出一個(gè)數(shù)字,那么默認(rèn)序列從1開始。當(dāng)然,seq 2 10也會(huì)按照你期待的那樣工作。)

現(xiàn)在,如果我能獲得成功運(yùn)行的列表,就可以通過 seq 命令生成所有可能的數(shù)字,再交叉檢查兩個(gè)列表來獲得想要的結(jié)果了!

許多命令行工具只完成一項(xiàng)工作。例如,cut 可以獲得每行指定位置上的字符:

$>cattextLoremipsumdolorsitamet$>cattext|cut-c2-5oremolor

注意這里使用了所謂的“管道運(yùn)算符” | 。我說過,許多工具只做一件事,而且把那件事做到最好。很方便的是這些工具可以組合使用。使用管道,左邊命令的結(jié)果就會(huì)變成右邊命令的輸入。注意這些命令會(huì)將輸入當(dāng)做一系列行來處理,通常來說這非常方便。

我們可以把成功的文件名單列表利用管道輸入至 grep 命令,該命令可以使用正則表達(dá)式來查找。由于所有文件都以同樣長度的四個(gè)數(shù)字開始,我們可以利用正則表達(dá)式 dddd 來匹配這四個(gè)連續(xù)的數(shù)字,然后將文件末尾的 A 算法加到正則表達(dá)式中。要獲得文件列表,每行一個(gè)文件,只需執(zhí)行 ls。(盡管直接調(diào)用 ls 時(shí)并不會(huì)顯示成每行一個(gè)文件,但放在管道中時(shí)輸出就會(huì)變成這樣。)

$>lsdataset-directory|grep'dddd_A.csv'0009_A.csv0001_A.csv0002_A.csv0005_A.csv0007_A.csv0003_A.csv0006_A.csv...

出于某些原因,在使用 grep 之后這里的順序混亂了。我們可以使用 sort 命令來改正。而且由于我們只關(guān)心數(shù)字,可以使用 cut -c 1-4 來取出數(shù)字部分。

$>lsdataset-directory|grep'dddd_A.csv'|sort|cut-c1-40001000200030005000600070009...0499

這些數(shù)字跟 seq 命令的結(jié)果不太一樣,因?yàn)樗鼈兦懊嫜a(bǔ)了零。我們可以使用一段 Python 腳本將它們轉(zhuǎn)成整數(shù)。

#parse.pyimportsysforlineinsys.stdin:i=int(line)print(i)

現(xiàn)在將結(jié)果用管道導(dǎo)入這個(gè)腳本就能得到我們需要的數(shù)字:

$>lsdataset-directory|grep'dddd_A.csv'|cut-c1-4|python3parse.py1235679...499

接近目標(biāo)了!現(xiàn)在需要找出怎樣才能交叉檢查這兩個(gè)數(shù)字的列表。幸運(yùn)的是,有個(gè)命令叫做comm,它能檢查兩個(gè)輸入流中的公共字符。為了將上面這個(gè)命令的輸出作為輸入使用,我們可以將其求值后重定向,只需使用<(...)即可實(shí)現(xiàn):

$>comm<(ls?dataset-directory?|?grep?'dddd_A.csv'?|?cut?-c?1-4?|?python3?parse.py)?<(seq?500)????????1????????2????????3????4????????5????????6????????7????8????????9????10...????500

這個(gè)輸出不是太好理解。閱讀 comm 的手冊(運(yùn)行 man comm)可以發(fā)現(xiàn),comm 會(huì)“產(chǎn)生三列的輸出,分別是:只存在于 file1 的行,只存在于 file2 的行,以及存在于兩個(gè)文件的行”。要去掉第一列(其實(shí)它是空的,因?yàn)闆]有任何數(shù)字只存在于文件列表中),可以在調(diào)用 comm 時(shí)加入參數(shù)-1。我們也不關(guān)心同時(shí)存在于兩個(gè)輸入中的數(shù)字,因此還要傳遞標(biāo)志-3。

$>comm-1-3<(ls?dataset-directory?|?grep?'dddd_A.csv'?|?cut?-c?1-4?|?python3?parse.py)?<(seq?500)48...500

搞定!

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報(bào)投訴
  • 算法
    +關(guān)注

    關(guān)注

    23

    文章

    4623

    瀏覽量

    93104
  • UNIX
    +關(guān)注

    關(guān)注

    0

    文章

    296

    瀏覽量

    41513

原文標(biāo)題:程序員,你真的會(huì)用 Unix 命令?

文章出處:【微信號(hào):LinuxHub,微信公眾號(hào):Linux愛好者】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    不知道的AD功能

    不知道的AD——SmartPaste功能
    發(fā)表于 12-30 16:31

    自動(dòng)焊錫機(jī)那些不知道的事

    自動(dòng)焊錫機(jī)那些不知道的事
    發(fā)表于 05-11 06:08

    Miniplayer小技巧 保證有不知道

    Miniplayer小技巧 保證有不知道的 1,用電源充電完成后先別拔充電器,先按住開關(guān)別放再拔開線就不用更新歌曲庫了。
    發(fā)表于 02-01 16:38 ?695次閱讀

    玩轉(zhuǎn)iPhone:可能不知道的iPhone實(shí)用技巧

    玩轉(zhuǎn)iPhone:可能不知道的iPhone實(shí)用技巧 玩iPhone有段時(shí)間了吧,怎么才能讓iPhone更順手呢?在這里可以看到一些最新的iPhone小技巧
    發(fā)表于 04-07 09:22 ?308次閱讀

    深扒:iPhone7那些不知道的事!

    和往年一樣,今年的蘋果旗艦如期而至,采用雙旗艦設(shè)置,分別為4.7寸的iPhone7和5.5寸的iPhone7 Plus。那些升級(jí)和變化諸如升級(jí)了芯片到A10,取消了3.5mm耳機(jī)接口,Home鍵采用壓力式設(shè)計(jì)和雙攝像頭等等我們就不多說了,接下來我們說一說
    發(fā)表于 11-28 08:43 ?800次閱讀

    絕對(duì)有不知道的iOS自身小技巧!

    ?iOS本身就是一個(gè)很流暢,很人性化的系統(tǒng),但是功能多,一般使用的人有些功能不知道如何使用。小編找了幾點(diǎn)小iOS自身的使用小技巧分享給大家。
    發(fā)表于 12-19 13:42 ?575次閱讀

    知道linux常用查看硬件設(shè)備信息命令的方法是什么?

    知道linux常用查看硬件設(shè)備信息命令的方法是什么?
    發(fā)表于 05-13 11:04 ?3168次閱讀

    到底知不知道硬件設(shè)計(jì)是什么?

    想學(xué)習(xí)硬件電路方面的設(shè)計(jì),但不知道怎么入手? 懵懵懂的進(jìn)入硬件領(lǐng)域,對(duì)自己的發(fā)展和方向很迷茫? 做了一段時(shí)間硬件設(shè)計(jì),事業(yè)發(fā)展和薪資遭遇瓶頸? 有時(shí)候必須承認(rèn),還不夠優(yōu)秀!甚至不知道
    的頭像 發(fā)表于 05-18 11:27 ?9769次閱讀

    關(guān)于可能不知道的printf

    可能不知道的printf
    的頭像 發(fā)表于 02-05 12:28 ?2659次閱讀
    關(guān)于<b class='flag-5'>你</b>可能<b class='flag-5'>不知道</b>的printf

    如果不知道斜拉鏈機(jī)頭輪軸磨損怎么修,請看這里

    如果不知道斜拉鏈機(jī)頭輪軸磨損怎么修,請看這里
    發(fā)表于 06-16 14:55 ?1次下載

    一些也許您還不知道的 TINA-TI 的那些資源!

    一些也許您還不知道的 TINA-TI 的那些資源!
    發(fā)表于 11-07 08:07 ?3次下載
    一些也許您還<b class='flag-5'>不知道</b>的 TINA-TI 的<b class='flag-5'>那些</b>資源!

    在Linux下不知道的df命令那些功能

    問題: 我知道在Linux上我可以用df命令來查看磁盤使用空間。能告訴我df命令的實(shí)際例子使我可以最大限度得利用它嗎?
    的頭像 發(fā)表于 12-21 10:53 ?981次閱讀

    不知道的FPC,它的發(fā)展史竟然是這樣的!

    不知道的FPC,它的發(fā)展史竟然是這樣的!
    的頭像 發(fā)表于 11-15 10:48 ?1384次閱讀

    揭秘pcb是什么物質(zhì):不知道的“化學(xué)戰(zhàn)士”

    揭秘pcb是什么物質(zhì):不知道的“化學(xué)戰(zhàn)士”
    的頭像 發(fā)表于 12-14 10:27 ?1111次閱讀

    輥壓機(jī)軸承位磨損修復(fù)不知道那些

    電子發(fā)燒友網(wǎng)站提供《輥壓機(jī)軸承位磨損修復(fù)不知道那些事.docx》資料免費(fèi)下載
    發(fā)表于 03-12 15:10 ?0次下載
    主站蜘蛛池模板: 久久综合97色综合网| 免费网站在线视频美女被| 国模极品一区二区三区| 毛片爽爽爽免费看| 国产精品yy9299在线观看| 三级黄色a| 久久国产香蕉视频| 2018天天射| 黄视频在线播放| 日本www色视频成人免费网站| 国语自产免费精品视频一区二区| 男人j进女人j的一进一出视频| 日韩性xxx| 久久久久久国产精品免费免 | 亚洲综合成人在线| 亚洲成年网站| 狼色网| 成人夜色香网站在线观看| 天天操天天摸天天碰| avtt国产| 超黄视频网站| 国产嫩草影院在线观看| 免费看毛片网| 欧美精品成人久久网站| 色婷婷六月| 午夜五月天| 亚洲国产精品婷婷久久| 一本到卡二卡三卡视频| 三级毛片网| 国产欧美日韩综合精品无毒| 永久免费视频网站在线观看| 一级不卡毛片| 亚洲一区二区黄色| 久久国内| 亚洲一区二区三区网站| 69中国xxxxxxxx18| 37pao强力打造免费高速高清| 国产在线精品一区二区夜色| 天堂视频在线免费观看| 色噜噜中文网| 国产乱淫a∨片免费视频|