[HackerRank]粘貼指令4(Paste - 4)

題目描述

輸入文字檔案內容,每行都是一個城市的名稱和其所在的洲,每個欄位使用「,」字元分隔。請每隔三行將換行字元取代成TAB字元後重新輸出。

原題網址

https://www.hackerrank.com/contests/the-linux-bash-fest/challenges/paste-4

輸入格式

輸入一個文字檔案。

輸出格式

將輸入的檔案內容中的換行字元取代成TAB字元後重新輸出。

範例輸入

範例輸出

解題概念

「paste」指令可以將許多個檔案合併成一個檔案,預設的話,同一個檔案內容會在同一個欄(Column),欄位間使用TAB字元做分隔。在本題中需要把一個檔案內每隔三行的換行字元取代成TAB字元後重新輸出,在這裡有個比較特別的用法,那就是我們可以利用「-」來代表標準輸入作為「paste」指令的輸入,雖然「paste」指令如果不指定任何檔案路徑或是「-」的話預設也會使用標準輸入,但如果手動去指定「多個」「-」,則可以將標準輸入切割成類似多個內容交錯的檔案。例如現在有個檔案名稱是「myfile.txt」,其內容為:

如果執行以下指令:

paste myfile.txt myfile.txt

結果為:

但如果執行以下指令:

cat myfile.txt | paste - -

結果為:

「- -」可以想像成有兩個編號為A、B的虛擬串流,一開始會將標準輸入的第一行寫入A串流,再將標準輸入的第二行寫入B串流,接著再把標準輸入的第三行寫入A串流,依此類推,一直交替寫入進去。

參考答案

關於作者

Magic Len

Magic Len

各位好,我是Magic Len,是這網站的管理員。我是台灣台中大肚山上人,畢業於台中高工資訊科和台灣科技大學資訊工程系,曾在桃機航警局服役。我熱愛自然也熱愛科學,喜歡和別人分享自己的知識與經驗。如果你有興趣認識我,可以加我的Facebook,並且請註明是從MagicLen來的。

相關文章