Linux與命令列基礎
$ echo "aaa bab" | sed 's/a/x/'上面這個取代字元的 sed 指令,其輸出是下列何者?
- Axaa bab
- Bxaa bxb
- Cxxx bxb
查看答案與解析
正確答案:A. xaa bab
sed 的 s/取代前/取代後/ 在每一行只取代最先找到的一處。這一行最先出現的 a 是開頭的字元,所以輸出為 xaa bab。若要取代一行中的所有符合處,要像 s/a/x/g 那樣在最後加上 g(global),此時輸出為 xxx bxb。取代是以行為單位進行的,所以檔案有多行時,即使沒有 g,每一行最先的一處也都會被取代。
- A. 正確。因為沒有 g,只有行中第一個 a 變成 x。
- B. 取代不是以單字為單位,而是以行為單位。沒有 g 時,只取代行中最先的一處。
- C. 這是像 s/a/x/g 那樣加上 g 時的輸出。