① Linux系統中tr命令刪除和替換文本字元的基本用法
Linux系統中tr命令刪除和替換文本字元的基本用法如下:
刪除字元: 基本用法:使用d選項可以刪除指定的字元。例如,tr d "abc"會刪除所有輸入的’a’、’b’和’c’字元。 刪除控制字元:可以刪除如換行符n、製表符t等控制字元。例如,tr d "nt"會刪除所有換行和製表符。
替換字元: 基本用法:tr命令可以將一個字元替換為另一個字元。例如,tr "a" "x"會將所有輸入的’a’字元替換為’x’。需要注意的是,這里的替換是按字元進行的,而不是按字元串。所以tr "abc" "xyz"會將’a’替換為’x’、’b’替換為’y’、’c’替換為’z’,而不是將字元串”abc”整體替換為”xyz”。 字元范圍替換:可以使用字元范圍進行替換。例如,tr "[az]" "[AZ]"會將所有小寫字母替換為大寫字母。 特殊字元替換:對於控制字元,可以使用其八進製表示或速記符進行替換。例如,tr "012" "015"會將換行符替換為回車符。
其他常用選項: c:使用字元串1中字元集的補集進行替換。例如,tr c "[az]" "[*]"會將所有非小寫字母的字元替換為’*‘。 s:將連續重復的字元序列壓縮為一個字元。例如,tr s "[azAZ]"會將所有連續的大寫和小寫字母序列壓縮為一個字元。特別地,當用於刪除空行時,tr s "n"會將多個連續的換行符壓縮為一個換行符,從而刪除空行。
注意事項: 在指定字元串1或字元串2的內容時,只能使用單字元、字元串范圍或列表。 如果字元串1和字元串2的長度不相同,tr命令會忽略較長字元串中的多餘字元。 對於不可見字元,需要使用轉義字元來表示。
② Linux sed替換刪除文本的20個例子
使用 Linux sed 命令替換和刪除文件中指定字元的示例。以下示例涵蓋了多種場景,總有一個適合您。
sed 替換字元的命令格式如下:
$ sed 's/find/replace/' file 示例文件:
$ cat file
Linux
Solaris
Ubuntu
Fedora
RedHat
1. 刪除指定字元,如 'a'
$ sed 's/a//' file
Linux
Solris
Ubuntu
Fedor
RedHt
以上命令會刪除每一行匹配到的第一個 'a' 字元,移除所有 'a' 字元:
$ sed 's/a//g' file
2. 刪除每一行的第一個字元
$ sed 's/^.//' file
inux
olaris
Ubuntu
edora
edHat
^ 指定匹配每一行的開頭,. 可以匹配開頭的第一個字元。
3. 刪除每一行的最後一個字元
$ sed 's/.$//' file
Linu
Solari
Ubunt
Fedor
RedHa
$ 會匹配每一行字元串的結尾。
4. 刪除同時移除每一行的第一個字元和最後一個字元
$ sed 's/^.//;s/.$//' file
inu
olari
bunt
edor
edHat
sed 命令可以結合多個操作指令,使用 ';' 分割。
5. 刪除匹配到的第一個字元,如果沒有匹配不做處理
$ sed 's/^F//' file
Linux
Solaris
Ubuntu
edora
RedHat
以上命令移除了第一個且匹配F的字元。
6. 刪除匹配到的最後一個字元,如果沒有匹配不做處理
$ sed 's/x$//' file
Linu
Solaris
Ubuntu
Fedora
RedHat
只會刪除每一行結尾是 x 的字元。
7. 刪除每一行的第一到第三個字元
$ sed 's/...//' file
ux
aris
ntu
ora
Hat
{n} 匹配 n 次一個任意的字元。
8. 刪除每一行的第一個到第 n 個字元
$ sed -r 's/.{4}//' file
x
ris
tu
ra
at
{n} 匹配 n 次一個任意的字元。
9. 刪除每一行的最後 n 個字元
$ sed -r 's/.{3}$//' file
Li
Sola
Ubu
Fed
Red
匹配每一行開頭3個字元,且用 () 分組;.* 表示匹配任意多個字元。在替換位通過 \1 表示保留第一個分組的內容。
10. 除了每一行的第一到第n個字元外,剩下的都要刪除
$ sed -r 's/(.{3}).*/\1/' file
Lin
Sol
Ubu
Fed
Red
.{3} 匹配每一行開頭3個字元,且用 () 分組;.* 表示匹配任意多個字元,\1 表示保留第一個分組的內容。
11. 刪除每一行所有字元且保留結尾的n個字元
$ sed -r 's/.*(.{3})/\1/' file
nux
ris
ntu
ora
Hat
匹配每一行開頭3個字元,保留結尾的n個字元。
12. 刪除匹配到的多個字元
$ sed 's/[aoe]//g' file
Linux
Slris
Ubuntu
Fdr
RdHt
[] 指定需要匹配的多個字元,g 表示刪除每一行匹配到的所有字元。
13. 刪除匹配到的字元串
$ sed 's/lari//g' file
Linux
Sos
Ubuntu
Fedora
RedHat
'lari' 從 'Solaris' 中刪除。
14. 刪除每一行匹配到的第 n 個字元
$ sed 's/u//2' file
Linux
Solaris
Ubunt
Fedora
RedHat
默認 sed 只會處理匹配到的第一個字元,可以指定處理匹配到的第幾個字元。
15. 刪除每一行以某個字元開頭的子字元串
$ sed 's/a.*//' file
Linux
Sol
Ubuntu
Fedor
RedH
a.* 匹配以 'a' 開頭的字元串。
16. 刪除文件中每一行中出現的所有數字
$ sed 's/[0-9]//g' file
17. 刪除每一行中出現的小寫字元
$ sed 's/[a-z]//g' file
L
S
U
F
RH
18. 刪除除了小寫字元之外的其他所有字元
$ sed 's/[^a-z]//g' file
inux
olaris
bnt
edora
edat
19. 刪除每一行所有的字母和數字字元
$ sed 's/[a-z][A-Z][0-9]//g' file
20. 刪除每一行的一個字元,且忽略大小寫
$ sed 's/[uU]//g'
Linx
Solaris
bnt
Fedora
RedHat