如何突出顯示文件中每個單字的第二個元音?

如何突出顯示文件中每個單字的第二個元音?

我試圖將單字中的每個第二個元音突出顯示為紅色。我究竟做錯了什麼?

cat room.txt | sed 's:[AEIOU]:$(printf "${\e[1;30m}&${\e[0m}"):i2'

詩。抱歉讓您不清楚。

我想要每個單字的第二個元音以紅色突出顯示。

答案1

  1. 命令替換不在單引號中執行,您必須使用雙引號。
  2. \e[1;30m不是變量,所以你不能這樣做${\e[1;30m}

嘗試:

sed 's:[AEIOU]:'"$(printf "\e[1;30m&\e[0m")"':i2' room.txt

這裡,我關閉單引號,然後使用雙引號,然後重新開啟單引號。

答案2

您誤解了seds///2構造。這不會執行每個第二個單詞,它只會執行每行的第二個匹配。 o 突出顯示每個單字的第二個元音,您需要先識別單字。一個簡單的方法是將空格轉換為換行符,運行sed然後再次轉換回來:

tr ' ' $'\n' < room.txt | 
    sed 's:[AEIOU]:'"$(printf "\e[1;31m&\e[0m")"':i2' | 
        tr $'\n' ' ' 

但是,這將傳回一個沒有尾隨換行符的字串。補充一點,就是echo整件事情:

echo $(tr ' ' $'\n' < room.txt | 
      sed 's:[AEIOU]:'"$(printf "\e[1;31m&\e[0m")"':i2' | tr $'\n' ' ' )

輸出範例:

在此輸入影像描述

相關內容