Shell

使用 awk 或 sed 將所有小字(2-3 個字元)轉換為大寫

  • July 29, 2022

我需要將所有 2-3 個字元的單詞全部大寫。1 個字元和 4 個以上字元的單詞需要保持不變。

輸入:

cat Example
Dog
I
Fish
su
Su adm
Amd Cat ignore

預期輸出:

CAT Example
DOG
I
Fish
SU
SU ADM
ADM CAT ignore

使用 GNUsed

$ sed -E 's/\<[[:alpha:]]{2,3}\>/\U&/g' input_file
DOG
I
Fish
SU
SU ADM
AMD CAT ignore

我會改用 perl:

$ perl -pe 's/\b\w{2,3}\b/uc($&)/eg' file
CAT Example
DOG
I
Fish
SU
SU ADM
AMD CAT ignore

如果您的文件包含以 UTF-8 編碼的非 ASCII 字元,並且您的語言環境使用 UTF-8 作為字元映射,例如sté應該變為的字元串STÉ,則使用:

$ perl -C -pe 's/\b\w{2,3}\b/uc($&)/eg' file
CAT Example
DOG
I
Fish
SU
SU ADM
AMD CAT ignore
STÉ

引用自:https://unix.stackexchange.com/questions/711705