題目描述
顯示每行輸入的前3個欄位。
原題網址
輸入格式
輸入一個有著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