題目描述

顯示每行輸入的前3個欄位。



原題網址

https://www.hackerrank.com/challenges/text-processing-cut-5

輸入格式

輸入一個有著N行ASCII字元的文字檔案。N的範圍在1~100之間(包括1和100)。每行的字元數則介於2到100之間(包括2和100)。

輸出格式

將輸入的N行文字中的每行前3個欄位,輸出成新的N行。

範例輸入

1	New York, New York[10]	8,244,910	1	New York-Northern New Jersey-Long Island, NY-NJ-PA MSA	19,015,900	1	New York-Newark-Bridgeport, NY-NJ-CT-PA CSA	22,214,083
2	Los Angeles, California	3,819,702	2	Los Angeles-Long Beach-Santa Ana, CA MSA	12,944,801	2	Los Angeles-Long Beach-Riverside, CA CSA	18,081,569
3	Chicago, Illinois	2,707,120	3	Chicago-Joliet-Naperville, IL-IN-WI MSA	9,504,753	3	Chicago-Naperville-Michigan City, IL-IN-WI CSA	9,729,825
4	Houston, Texas	2,145,146	4	Dallas-Fort Worth-Arlington, TX MSA	6,526,548	4	Washington-Baltimore-Northern Virginia, DC-MD-VA-WV CSA	8,718,083
5	Philadelphia, Pennsylvania[11]	1,536,471	5	Houston-Sugar Land-Baytown, TX MSA	6,086,538	5	Boston-Worcester-Manchester, MA-RI-NH CSA	7,601,061

範例輸出

1	New York, New York[10]	8,244,910
2	Los Angeles, California	3,819,702
3	Chicago, Illinois	2,707,120
4	Houston, Texas	2,145,146
5	Philadelphia, Pennsylvania[11]	1,536,471

解題概念

利用while和「read」指令,來一行一行讀取從標準輸入傳進來的檔案內容。每讀取到一行資料,就儲存到變數C之中,再作為輸入傳給「cut」指令來進行字串處理。「cut」指令的「-f」選項可以顯示指定位置的欄位(field),如果要指定一段位置範圍內的欄位,可以使用逗號「-」來分隔起始位置和終止位置。不過由於這題的起始位置是從1開始,因此也可以省略起始位置。至於欄位的切割依據,可以使用「cut」指令的「-d」選項來決定分割欄位的字元,預設是TAB字元。

參考答案

#!/bin/bash

while read C; do
   echo "${C}" | cut -f1-3
done