當前位置:首頁 » 編程軟體 » shell腳本字元串替換

shell腳本字元串替換

發布時間: 2023-01-25 23:18:48

A. shell腳本定位某個文件中特定位置的字元串並進行替換應該怎麼寫

根據位置替換即可:

readip
sed-ri"/subnet/s/(subnet)[^]+(netmask.*)/1$ip2/"/mnt/file

/subnet/ -先正則匹配到含有subnet的行,然後替換。

替換的時候將不變的部分用小括弧括起來,後面依次用1 , 2 原封不動地引用回來。

-r 選項用於支持擴展正則,這樣就不需要額外的轉義符。

[^] 表示不為空格的任意一個字元,+ 表示重復該字元至少1次。

B. shell腳本 批量替換多個文件中指定字元之間的字元串中的指定字元

用Replace
Pioneer處理很輕松,找到")"和"("之間的內容,把"、"替換成"|"就可以了。
需要說明的是,你的括弧是中文括弧"()"而不是英文括弧"()",所以不用轉義。
以下是詳細步驟:
1.
ctrl-o打開待處理txt文件
2.
ctrl-h打開replace窗口
*
在Search
for
pattern下面輸入:
"(^|)).*?((|$)"(不包含左右的雙引號)
*
在Replace
with
pattern下面輸入:
"replace($match,'、','|')"(不包含左右的雙引號)
3.
點擊Replace,完成。
****************
另外,這里再給你一個純正則表達式的版本:
把"、(?=[^)]*((|$))"替換成"|"就可以了。
你也可以在Replace
Pioneer的search
for
pattern輸入"、(?=[^)]*((|$))"(無雙引號),然後在replace
with
pattern輸入|就可以了。

C. Shell腳本:${...}在字元串中的多種用法

1、${var}

限定變數。

如果一個變數名A是另一個變數名AB的前部分,那麼,如果要在AB相連時,要得到A的值,就必須使用${var}限定。

如果變數名不會產生歧義時(即獨立的變數名),${var}與$var沒有任何區別。

var="hello"

var_01="hello01"

echo  $var $var_01 ${var}_01

>>> hello hello01 hello_01

2、${#var}

得到變數var的長度

var="hello"

echo ${#var}

>>> 5

3、${var#}

刪除變數首部的字元(串),

"#"後面的可以是字面串,也可以是正則表達式(惰性匹配)。

var="hello"

echo ${var#he}

>>> llo

var="/res_pos/path/from/something"

echo ${var#/}

>>> res_pos/path/from/something    # 刪除第一個"/"

echo ${var#/*/}

>>> path/from/something  # 刪除首部匹配"/*/"的串,即"/res_pos/"

4、${var##}

刪除變數首部的字元(串),

只是,當使用2個"##"時,匹配是貪婪的(貪婪匹配,也就是盡可能多的匹配)。

echo ${var##/*/}

>>> something  # 刪除首部匹配"/*/"的串,即"/res_pos/path/from/"。

5、${var%}

刪除變數尾部的字元(串),

"%"後面的可以是字面串,也可以是正則表達式(惰性匹配)。

var="hello"

echo ${var%llo}

>>> he

var="~/res_pos/path/from/something"

echo ${var%/*}

>>> ~/res_pos/path/from    # 刪除尾部的"/something"

6、${var%%}

刪除變數尾部的字元(串),

只是,當使用2個"%%"時,匹配是貪婪的(對應於第4條)

var="~/res_pos/path/from/something"

echo ${var%/*}

>>> ~    # 刪除第一個的"/"後的所有所有內容(包括"/"),貪婪匹配中,"/*"就是"/"後的所有字元串

7、${var::}

python的切片概念相似,取變數var的起始索引,

指定長度的子串(${var:索引:長度})。

var="~/res_pos/path/from/something"

echo ${var:0:5}

>>> ~/res

echo ${var:1:5}

>>> /res_      # 可見,字元串的索引是從0開始的

echo ${var::5}

>>> ~/res      # 省略"索引",默認為從0開始

echo ${var:1:}

>>>              # 省略"長度",默認長度為0,所以輸出為空

8、${var//}

字元串替換。

將var中的字元串A替換成字元串B(${var/A/B})。

var="hello world"

echo ${var/hello/hi}

>>> hi world      # 字元串"hello"替換成了"hi"

echo ${var/l/X}

>>> heXlo world  # 第一個"l"替換成了"X"

9、${var///}

字元串替換,

與第8點相同,只不過,現在是將所有出現的串A替換成串B(${var//A/B})。

var="hello world"

echo ${var//l/X}

>>> heXXo worXd  # 所有的"l"都替換成了"X"

10、${var/#/}

替換字元串首部的串A為串B,

(${var/#A/B}),與第8點不同的是,這里只替換首部的串A。

var="hello world. hello baby."

echo ${var//h/H}

>>> Hello world. Hello baby.    # 將所有"h"替換成了"H"

echo ${var/#h/H}

>>> Hello world. hello baby.    # 將首部的"h"替換成了"H"

echo ${var/e/E}

>>> hEllo world. hello baby.    # 將第一個出現的"e"替換成了"E"

echo ${var/#e/E}

>>> hello world. hello baby.    # 首字元不是"e",所以沒有進行任何替換,原樣輸出。

11、${var/%/}

替換字元串尾部的串A為串B,

(${var/%A/B}),與第10點相似,只是這是處理的是字元串尾。

var="hello hello"

echo ${var/%o/END}

>>> hello hellEND    # 將尾部的字元"o",替換成了"END"。

D. 在shell bash腳本里,如何把一個字元串中的回車轉成其他字元

假設 s 是含回車的字元串

echo$s|tr'
''	'

能夠將回車轉成 Tab。 可以換成你想要字元。

E. macosx系統 如何編寫一個shell腳本替換文件中多行中的特定字元串

sed -i '' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
mac 上要求你必須對修改的文件進行備份,因此需要你這樣寫代碼
sed -i 'yourfile.back' '/aaa/{:a;n;s/123/xyz/g;/eee/!ba}' yourfile
如果你不需要備份文件則直接將"yourfile.back"留空即可

F. shell腳本sed命令如何使用變數替換掉包含指定字元串的整行

#先將包含指定字元串的整行列印到變數tmp
tmp=$(sed -n '/${zip}/p' 文本名)
#然後將文本中這一整行字元串替換為你想要修改的字元串
sed -i 's/${tmp}/${zip}/g' 文本名

G. 請問怎麼在shell腳本中,替換文件多行裡面的指定字元串

sed-i'/aaa/{:a;n;s/123/xyz/g;/eee/!ba}'yourfile

先匹配aaa,匹配到後執行大括弧里的語句。

n 讀取下一行

s/123/xyz/g 將123替換為xyz,全局替換,同一行中出現幾次替換幾次

:a 設定跳轉標簽a

/eee/!ba 若當前行匹配不上eee,則跳轉到標簽a處繼續執行,構成一個循環。若匹配到eee,則退出循環,sed重新對讀入的每行匹配aaa。

由於sed沒有加-n靜默選項,所以默認對每行數據處理後都列印。

H. shell腳本,正則表達式,如何批量替換多個文件夾中指定字元中的指定字元

用Replace Pioneer處理很輕松,找到")"和"("之間的內容,把"、"替換成"|"就可以了。 需要說明的是,你的括弧是中文括弧"()"而不是英文括弧"()",所以不用轉義。 以下是詳細步驟: 1. ctrl-o打開待處理txt文件 2. ctrl-h打開replace窗口 * 在Search for pattern下面輸入: "(^|)).*?((|$)"(不包含左右的雙引號) * 在Replace with pattern下面輸入: "replace($match,'、','|')"(不包含左右的雙引號) 3. 點擊Replace,完成。 **************** 另外,這里再給你一個純正則表達式的版本: 把"、(?=[^)]*((|$))"替換成"|"就可以了。 你也可以在Replace Pioneer的search for pattern輸入"、(?=[^)]*((|$))"(無雙引號),然後在replace with pattern輸入|就可以了。

I. 怎麼使用shell腳本將,每行前兩個字元串去替換這一行的說有「;」 呢

雖然在shell腳本中可以使用任意的unix命令,但是還是由一些相對更常用的命令。這些命令通常是用來進行文件和文字for-loop表達式查看一個字元串列表(字元串用空格分隔)然後將其賦給一個變數:for var in.;do.

J. linux shell 腳本中怎樣將字元串轉化為命令

1.沒必要這樣。因為shell腳本執行的時候是在一個子shell中執行的,即使你成功的將字元串轉化為命令,你也不會因為腳本執行「cd /home」而在本shell中切換到/home下。……額,是不是說的繞了。。。
2.倘若按照你的想法,那就是一個新shell了。話句話說,你覺得像bash、sh、csh等等這些shell難道僅僅是一個腳本嗎?再換句話說,難道bash僅僅是在sh的一個腳本嗎?……

=====

3.假如真的需要在使用腳本的時候讓使用者自己輸入需要腳本執行的命令,只能用選擇語句或者判斷語句來匹配使用者的輸入。因為使用者在使用腳本時輸入給腳本的「命令」從根本上講並不是命令,對腳本而言它僅僅是一個執行過程中的「選項」。好比「(1)刪除(2)增加(3)退出... 請輸入選項:」這種最平常的方式,拓展開也就是把提示去掉變成「請輸入命令:」,而在使用者輸入之後腳本用 if 刪除==輸入字元串 then 。。。這樣的方式來滿足需求。
======
沒了。

熱點內容
java返回this 發布:2025-10-20 08:28:16 瀏覽:710
製作腳本網站 發布:2025-10-20 08:17:34 瀏覽:972
python中的init方法 發布:2025-10-20 08:17:33 瀏覽:681
圖案密碼什麼意思 發布:2025-10-20 08:16:56 瀏覽:834
怎麼清理微信視頻緩存 發布:2025-10-20 08:12:37 瀏覽:741
c語言編譯器怎麼看執行過程 發布:2025-10-20 08:00:32 瀏覽:1081
郵箱如何填寫發信伺服器 發布:2025-10-20 07:45:27 瀏覽:312
shell腳本入門案例 發布:2025-10-20 07:44:45 瀏覽:192
怎麼上傳照片瀏覽上傳 發布:2025-10-20 07:44:03 瀏覽:880
python股票數據獲取 發布:2025-10-20 07:39:44 瀏覽:837