我們上節學習的過程中,創建了一個name_list.txt的文件,name_list.txt裡面的內容是:
I am 1.txt
I am xiaozhi
I am hexiaozhi
現在如果我想把name_list.txt裡面的內容進行截取,把這3行內容的I am都去掉,只留下1.txt、xiaozhi、hexiaozhi,如何做呢?
我們使用cut命令就可以做到。
●cut
cut在英語中就是剪切、切掉的意思。
我們先使用man cut來看看cut的說明:
如上圖,我們看到cut的作用是從文件的每一行刪除片段。
cut的option我們一般最常用的2個是-d和-f。
-d就是delimiter的第一個字母,就是分隔符或者說切分的標誌,可以自定義。
-f就是field的第一個字母,就是內容被切分後的區域。我們可以選擇自己需要的區域。
現在我們把name_list.txt裡面的1.txt、xiaozhi、hexiaozhi切分出來。
我們輸入命令:
cut -d" " -f 3 name_list.txt
說明:
-d代表分隔符,就是用什麼對每一行內容進行切分,那麼-d後面就要跟具體的分隔符,因為我們name_list.txt裡面的內容,每一行都是用空格分開的,所以這裡我們就用空格作為分隔符,空格就是雙引號裡面按空格鍵打一個空格。
注意:引號裡面如果不按空格鍵,就代表什麼都沒有,表示空字符串,並不是空格。""代表空字符串," "代表空格。
-f代表切分後的區域,比如I am 1.txt這一行,被兩個空格分隔成了3個區域,第一個區域是I ,第二個區域是am,第三個區域是1.txt。
而-f後面的數字3,代表我們要保留的區域,3就是代表我們要保留第3個區域。
提示:如果要保留第三個以及它後面的所有區域,就在3後面跟一個-。
分隔符和切分區域後面,就是被切分的文件,這裡name_list.txt就是被切分的文件。
具體操作如下圖:
我們看到把name_list.txt裡面的每一行的第三個區域保留下來了。
以上是我們直接選定只保留第三個區域的東西。如果文件的內容被切分後,多於3個區域,而我們想要把第三個區域以及它之後的區域的東西都保留下來,那麼就在-f的後面的數字3後面加上一個-。
現在我來演示一下。
我們把name_list.txt裡面的內容改一下,比如,我把I am 1.txt改成:
I am John B. Goodenough.
現在我想要把I am去掉,但是要把I am後面的名字全都保留,因為人家的這個名字就是比較長,如果我們只保留第三個區域,那就只能保留下來John,我們還要把後面的B. Goodenougn也保留下來。
我們用nano name_list.txt打開name_list.txt這個文件,然後進行改動,
改動之後,按Ctrl+X、y進行保存。
現在我們還是用空格對name_list.txt這個文件的內容進行切分,然後保留第三個區域以及它之後的區域,此時使用命令:
cut -d" " -f 3- name_list.txt
也就是在-f後面的3後面加了一個-。
現在我們看看切分的結果,如下圖:
接下來我們用cat name_list.txt看看name_list.txt裡面是什麼。
我們看到name_list.txt裡面還是跟沒有切分之前一樣。這是因為cut命令只是對這個文件的內容進行了切分的操作,然後把切分的結果顯示了出來,但是被切分的文件的內容還是不變的。
那麼我們根據上節所學的知識,可以把cut後的結果導入到一個新的文件裡面去,這樣就實現了對一個文件裡面我們想要的內容的截取和保存。
如何把切分的結果導入到新的文件呢?
我們可以在cut命令之後跟上>,然後空格,再跟上要導入的文件即可。
比如我們要導入到的文件叫new_name_list.txt。
那麼就使用命令:
cut -d" " -f 3- name_list.txt > new_name_list.txt
我們把切分的結果導入到new_name_list.txt之後,可以用cat看看name_list.txt和new_name_list.txt裡面的內容。
操作如下圖:
總結:
對一個文件中的內容進行選擇性的剪切,可以使用cut命令。
命令格式:
cut -d"分隔符" -f 要保留的區域(以數字表示保留哪個區域) 被切分的文件
如果要保留一個區域以及它後面的所有區域,在要保留的區域的數字後面加一個符號-。
如果要把切分的結果進行保存,可以在cut命令後面跟上>,空格,再跟上要保存到的新文件。
註:John B. Goodenough是2019年諾貝爾化學獎獲獎者,大家都叫他「足夠好」先生,今年97歲了,他的人生經歷很豐富,先是學習數學的,後面當兵去了,退役後30多歲又去學習物理,之後研究計算機內存,由於研究經費被砍掉,然後又從研究物理轉而研究化學,54歲開始研究鋰電池,75歲取得巨大突破,95歲研製出全世界首個全固態電池,被稱為「鋰電池之父」。我們今天使用的手機、筆記本電腦、電瓶車、電動汽車、手環等可穿戴智能設備,都是使用的鋰電池,沒有這位老先生,我們今天就不會安全便捷的使用這些設備。他的人生非常勵志,97歲才獲得諾貝爾獎,而且他帶學生不會因為種族和國籍而進行歧視,他的學生大多是亞洲人,中國科學院的研究院辛森、孫春文都是他的學生。建議大家有時間可以看看他的經歷。