在 Linux 命令列中轉換大小寫
轉換文字的大小寫可能非常繁瑣,尤其是當你要避免無意間的拼寫錯誤時。幸運的是,Linux 提供了一些命令,可以使工作變得非常容易。
有很多方法可以在 Linux 命令列中將文字從小寫更改為大寫,反之亦然。實際上,有一組這樣的命令可以選擇。這篇文章檢驗了一些最佳的命令來完成這項工作,以及你該如何讓它們正常工作。
使用 tr
tr
(translate)命令是在命令列或指令碼中最容易使用的命令之一。如果你要確定要一串大寫字串,你只需將它傳給 tr
,如下所示:
$ echo Hello There | tr [:lower:] [:upper:]
HELLO THERE
下面是一個在指令碼中使用這個命令的例子,當你要確保新增到檔案中的所有文字都使用大寫形式以保持一致性時(LCTT 譯註:這裡輸入部門名稱作為示例):
#!/bin/bash
echo -n "Enter department name: "
read dept
echo $dept | tr [:lower:] [:upper:] >> depts
將順序切換為 [:upper:] [:lower:]
會產生相反的效果,將所有大寫的部門名稱都轉換為小寫:
echo $dept | tr [:upper:] [:lower:] >> depts
同樣,你可以使用 sed
命令的 A-Z
和 a-z
字串完成相同的操作:
echo $dept | tr a-z A-Z >> depts
毫無疑問,反轉 a-z
和 A-Z
字串的順序將產生相反的效果,將文字全部變為小寫。
使用 awk
awk
命令可讓你使用它的 toupper
和 tolower
選項執行相同的操作。上例指令碼中的命令可以用這種方式代替:
echo $dept | awk '{print toupper($0)}' >> depts
相反操作(切換為小寫)如下所示:
echo $dept | awk '{print tolower($0)}' >> depts
使用 sed
sed
(stream editor)命令也可用於切換大小寫。它與上面顯示的兩個命令中的第一個具有相同的效果。
echo $dept | sed 's/[a-z]/\U&/g' >> depts
從大寫字母切換到小寫字母只需將行尾附近的 U
替換為 L
。
echo $dept | sed 's/[A-Z]/\L&/g' >> depts
操作檔案中的文字
awk
和 sed
都能更改整個檔案的文字大小寫。因此,你發現你的老闆需要所有部門名稱的小寫麼?沒問題。只需帶上檔名執行以下命令:
$ awk '{print tolower($0)}' depts
finance
billing
bookkeeping
如果要覆蓋 depts
檔案,而不僅僅是以小寫形式顯示,則需要執行以下操作:
$ awk '{print tolower($0)}' depts > depts-
$ mv depts- depts
但是,使用 sed
進行更改,你可以避免最後一步,因為 sed
可以“原地”編輯檔案,如下所示,檔案完整,但文字全部小寫:
$ sed 's/[A-Z]/\L&/g' depts
僅將首字母轉換為大寫
要僅將字串中單詞的首字母轉換為大寫,那麼可以執行以下操作:
$ echo design \& engineering| sed -e "s/\b\(.\)/\u\1/g"
Design & Engineering
該命令將確保首字母大寫,但不會更改其餘字母。
確保只有首字母大寫
當要更改文字以使只有首字母大寫時,這更具挑戰性。假設你正在處理一個工作人員姓名列表,並且希望以正常的“名 姓”方式對其格式化。
使用 sed
你可以使用更復雜的 sed
命令來確保以下結果:
$ echo design \& ENGINEERING | sed 's/\b\([[:alpha:]]\)\([[:alpha:]]*\)\b/\u\1\L\2/g'
Design & Engineering
使用 Python
如果你已安裝 Python,你可以執行這樣的命令,它還可以設定文字格式,以便每個單詞只有首字母大寫,並且它可能比上面顯示的 sed
命令更易於解析:
$ echo -n "design & engineering" | python3 -c "import sys; print(sys.stdin.read().title())"
Design & Engineering
有多種方法可以在大小寫之間更改文字格式。哪種方法效果最好取決於你要處理的是單個字串還是整個檔案,以及想要的最終結果。
作者:Sandra Henry-Stocker 選題:lujun9972 譯者:geekpi 校對:wxy
訂閱“Linux 中國”官方小程式來檢視
相關文章
- 在Linux命令列中進行大小寫字元轉換Linux命令列字元
- 在Linux命令列內的大小寫轉換(附全套Linux影片教程)Linux命令列
- Linux命令列:對內容進行大小寫字元轉換 Linux命令列字元
- 在Linux行內直接進行大小寫轉換Linux
- 字串-大小寫轉換字串
- Python中怎麼轉換字串大小寫Python字串
- JavaScript字母大小寫轉換JavaScript
- JavaScript字串大小寫轉換JavaScript字串
- 使用正則 轉換大小寫
- 字串中大小寫轉換輸出字串
- json物件以及陣列鍵值的深度大小寫轉換問題JSON物件陣列
- CSS text-transform字元大小寫轉換CSSORM字元
- Qt short int 陣列大小端轉換(qbswap)QT陣列
- MySQL-資料記錄大小寫轉換MySql
- 批次目錄檔名大小寫轉換器
- 字串大小寫轉換和字串的比較字串
- LINUX命令列書寫規則Linux命令列
- 使用 Calcurse 在 Linux 命令列中組織任務Linux命令列
- 使用 xclip 在 Linux 命令列中複製貼上Linux命令列
- 在 Linux 中如何從命令列查詢 VirtualBox 版本Linux命令列
- VS Code 如何設定大小寫轉換快捷鍵
- fastjson轉換json時,碰到的那些首字母大小寫轉換的坑!ASTJSON
- 電腦鍵盤大小寫字母怎麼切換 轉換英文字母大小寫是哪個鍵
- 在 Linux 命令列中規劃你的假期日曆Linux命令列
- ARM彙編解決階乘以及大小寫轉換
- 在 Linux 命令列下使用“原力”Linux命令列
- 在Linux下管理MySQL的大小寫敏感性LinuxMySql
- Linux基礎命令—文字格式轉換fmtLinux
- Linux基礎命令---文字格式轉換fmtLinux
- Linux基礎命令—格式轉換expand、unexpandLinux
- 如何在 Linux 命令列中切換使用者Linux命令列
- 在 Linux 命令列中使用 tcpdump 抓包Linux命令列TCP
- 在Linux命令列檢視影像的方法Linux命令列
- 學習-Java順序結構之字元變換之大小寫字母轉換Java字元
- 在命令列中連線mysql命令列MySql
- Linux基礎命令---文字格式轉換expand、unexpandLinux
- 一文搞定Python大小寫轉換,首字母大寫,去除特殊字元Python字元
- Linux命令列Linux命令列