Shell字串的替換

2021-10-08 13:08:37 字數 2303 閱讀 4022

字串的替換:

1)只替換第1個子串

格式:$

還以前面的phone變數為例,確認原始值:

1.

[root@dyy ~]

# echo $phone

2. 13788768897

將字串中的第1個8替換為x:

1.

[root@dyy ~]

# echo $

2. 137x8768897

2)替換全部子串

格式:$

將phone字串中的所有8都替換為x:

1.

[root@dyy ~]

# echo $

2. 137xx76xx97

字串的匹配刪除:

以處理系統預設的賬戶資訊為例,定義變數a:

1.

[root@dyy ~]

# a=`head -1 /etc/passwd`

2.[root@dyy ~]

# echo $a

3. root:x:0:0:root:/root:/bin/bash

1.

[root@dyy ~]

# echo $

2. x:0:0:root:/root:/bin/bash

1.

[root@dyy ~]

# echo $a //確認變數a的值

2. root:x:0:0:root:/root:/bin/bash

3.[root@dyy ~]

# echo $

4./bin/bash

1.

[root@dyy ~]

# echo $

2. root:x:0:0:root:/root

1.

[root@dyy ~]

# echo $

2. root

編寫renfilex.sh指令碼:

建立乙個測試用的測試檔案

1.

[root@dyy ~]

# mkdir rendir

2.[root@dyy ~]

# cd rendir

3.[root@dyy rendir]

# touch .doc

4.[root@dyy rendir]

# ls

5. a.doc b.doc c.doc d.doc e.doc f.doc g.doc h.doc i.doc

1.

[root@dyy rendir]

# vim renfile.sh

2.#!/bin/bash

3.for i in `ls

*.doc` #注意這裡有反引號

4.do

5.mv

$i $

.txt

6. done

7.[root@dyy ~]

# chmod +x renfile.sh

測試指令碼:

1.

[root@dyy rendir]

# ./renfile.sh

2.[root@dyy rendir]

# ls

3. a.txt b.txt c.txt d.txt e.txt f.txt g.txt h.txt i.txt

1.

[root@dyy rendir]

# vim ./renfile.sh

2.#!/bin/bash

3.#version:2

4.for i in `ls*.

$1`5.

do6.

mv$i $.$2

7. done

3)驗證、測試改進後的指令碼

將 *.doc檔案的副檔名改為.txt:

1.

[root@dyy rendir]

# ./renfile.sh txt doc

將 *.doc檔案的副檔名改為.mp4:

1.

[root@dyy rendir]

# ./renfile.sh doc mp4

shell 字串替換

替換特定字串,原變數並未修改 echo 匹配字元 替換字元 www.google.com echo net 原變數並未修改 替換所有匹配到的字元,應該通過 echo 將net的.替換為 echo 將net的.替換為 只替換開頭匹配的字串 對於add www.xiaomi.com.www的開頭的www...

shell 字串操作 變數替換

這篇部落格和我之前整理的字串處理有部分重疊 但是主要字串的特換還是有用,就 了一下。表示式含義 獲取字串 string 的長度 從字串 string position 處擷取子串 從字串 string position 處擷取length 長度的子串 從字串 string 的開頭,刪除最短匹配 su...

shell字串的擷取和替換

將多個空格替換為乙個空格 sed s g 如果空格與tab共存時用 sed e s space space g filename kill 9 用於強行殺死進行的程序 ps e grep 程序名 部分或全部 cut b 1 7 xargs kill 9 ps e grep 程序名 部分或全部 awk...