Which of the following commands replaces each occurrence of 'bob' in the file letter with 'Bob' and writes the result to the file newletter?



A.

sed '/bob/Bob' letter > newletter

B.

sed s/bob/Bob/ letter < newletter

C.

sed 's/bob/Bob' letter > newletter

D.

sed 's/bob/Bob/g' letter > newletter

E.

sed 's/bob, Bob/' letter > newletter

題解

「sed」指令可以處理檔案的文字內容,能夠進行許多不同的動作組合,動作是使用一串特定格式的字串來定義,因此在輸入動作參數的時候必須使用單引號或是雙引號來括起來。選項B可以先刪除掉,因為「s/bob/Bob/」動作沒有使用單引號或是雙引號括起來。

題目要求要將「bob」這個字串取代成「Bob」,因此要使用「sed」指令的「s」這個動作方式來達成字串取代的功能。選項A沒有使用到「s」,因此可以先刪除掉。另外題目還要求所有的「bob」字串都要被取代,因此最後還要加上「g」,才可以取代所有的「bob」字串,否則只會取代每行第一個出現的「bob」字串。

所以答案是選項D。