當前位置:首頁 » 編程軟體 » shell腳本sed變數

shell腳本sed變數

發布時間: 2022-11-13 00:45:27

① shell 中用sed作替換操作怎麼使用變數

用雙引號就行了(單引號會屏蔽
$
對shell變數的取值功能)
sed
"s/$bsed/$a/g"
filename
>result

② shell的sed用法

sed 是Unix中類似於awk的行編輯器,對於sed工具包的所有操作來說, 我們最關心的其實就是3個最主要的操作. 分別是printing(列印到stdout), deletion(刪除), 和substitution(替換). 它與awk不同的地方在於sed是非交互的編輯器,而awk是可交互的編輯器。它即可以從stdin中接收文本輸入, 也可以從文件中接收文本輸入, 它對輸入中的指定行進行特定的操作, 一行操作一次, 然後將結果輸出到stdout, 或輸出到文件中. 在shell腳本中使用的話, sed通常都是作為管道工具鏈中的一個處理部分來使用.

Sed的處理方法,上面你提到的表達式叫作「模式匹配」,是一種替換操作:
s/pattern1/pattern2/
意思是用 pattern2 替換pattern1並顯示到屏幕上。

講講echo "uid=100(guest) gid=100(others) groups=10(users),11(floppy)"|sed 's/^[^(]*(\([^)]*\).*/\1/'的意思 :
echo 是向屏幕顯示一行字元
「|」叫管道,象水管一樣把「|」前面程序產生的輸出作為「|」後的程序的輸入。
sed 行編輯器。
's/^[^(]*(\([^)]*\).*/\1/' 對應上文提到的替換參數,分成兩部分,pattern1:/^[^(]*(\([^)]*\).*/
表示以不是以「(」開始的字元後面跟任意字元,然後是貪婪匹配模式運算(),任意以「(」字元開始,中間不包括")"字元的任意字元並以「)」後接。後面再接任意字元串。因為前面的程序輸出「uid=100(guest) gid=100(others) groups=10(users),11(floppy)」,所以貪婪匹配模式得到結果(guest)
pattern2:/\1/ \1是正則表達式的貪婪匹配模式運算結果。
所以shell語句輸出guest替換長長的一串「uid=100(guest) gid=100(others) groups=10(users),11(floppy)」

③ shell腳本如何判斷變數為數字

#!/bin/bash

##
方法1
a=1234;echo
"$a"|[
-n
"`sed
-n
'/^[0-9][0-9]*$/p'`"
]
&&
echo
string
a
is
numbers
第一個-n是shell的測試標志,對後面的串"`sed
-n
'/^[0-9][0-9]*$/p'`"
進行測試,如果非空,則結果為真。
sed默認會顯示所有輸入行信息的,sed
的「-n」選項是讓sed不要顯示,而只顯示我們所需要的內容:即後面的表達式所匹配的行,這是通過表達式中加入「p」命令來實現的。
/^[0-9][0-9]*$/他的含義是匹配至少由一位數字構成的行

##
方法2,
可以,不過不是bash實現的,是使用了grep的正則
#if
grep
'^[[:digit:]]*$'
<<<
"$1";then
#
echo
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法3
#if
[
"$1"
-gt
0
]
2>/dev/null
;then
#
echo
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法4,case
#case
"$1"
in
#
[1-9][0-9]*)
#
echo
"$1
is
number."
#
;;
#
*)
#
;;
#esac

##
方法5,awk
#echo
$1|
awk
'{print($0~/^[-]?([0-9])+[.]?([0-9])+$/)?"number":"string"}'

##
方法5,awk
#if
[
-n
"$(echo
$1|
sed
-n
"/^[0-9]\+$/p")"
];then
#
echo
"$1
is
number."
#else
#
echo
'no.'
#fi

##
方法6,expr
expr
$1
"+"
10
&>
/dev/null
if
[
$?
-eq
0
];then
echo
"$1
is
number"
else
echo
"$1
not
number"
fi

④ shell腳本 將一個含特殊字元的變數,寫入文件對應的位置中,使用sed要麼寫入的字元不正確要麼就報錯

假如SSID變數中沒有&這個特殊符號,那麼直接用sed是可以滿足的

SSID='~!@#$%^*[}(/.*\/'
sed-is,ssid=.*,ssid=$SSID,gfilename

但是如果有了&符號,放到sed中會作為特殊用途展開,導致保留了原來的匹配字元,寫入的內容會不正確。

此時,只能換一種方式,用awk來操作字元串,然後重新寫入到文件中,此時需要多一個臨時文件

cpfilenamefilename1;
awk'{gsub("^ssid=.*","ssid='$SSID'");print$0}'filename1>filename;
rm-ffilename1

⑤ shell sed命令刪除指定行,匹配字元用變數替代,變數包含"/"和" "

改成這樣就可以了:
A="\/usr\/sbin\/control.sh --start"
sed -i "/$A/d" cmd.cfg

⑥ 如果在sed命令使用環境變數

1、sed命令使用雙引號的情況下,可以使用$var(變數)直接引用:
echo
|
sed
"s/^/$RANDOM.rmvb_/g"
13562.rmvb_
2、sed命令使用單引號的情況下,可以使用'"$var"'引用(單引號,然後雙引號,變數):
echo
|
sed
's/^/'"$RANDOM"'.rmvb_/g'
2442.rmvb_
sed中執行外部命令。
1、sed命令使用單引號的情況下使用'`shell
command`'或者'$(shell
command)'引用命令執行的結果:
echo
|
sed
's/^/'`echo
$RANDOM`'.rmvb_/g'
7700.rmvb_#
結果
#
上面的命令使用了舊式的命令替換,也可以採用新式的命令替換方法,如下:
echo
|
sed
's/^/'$(echo
$RANDOM)'.rmvb_/g'
13856.rmvb_#
結果
#
下面例子取用當前日期作為結果的一部分,如下:
echo
|
sed
's/^/'$(date
+"%Y%m%d")'.rmvb_/g'
20130401.rmvb_
#
結果
2、sed命令中使用雙引號的情況下,直接`shell
command`或者$(shell
command)引用命令執行。
echo
|
sed
"s/^/$(date
+"%Y%m%d").rmvb_/g"
20130401.rmvb_#
結果
#
使用環境變數$RANDOM以及舊式命令替換的例子:
echo
|
sed
"s/^/`echo
$RANDOM`.rmvb_/g"
29484.rmvb_#
結果
總結一下
在sed語句裡面,變數替換或者執行shell命令,雙引號比單引號少繞一些彎子;所以,sed和變數的關鍵詞搜索的結果,眾多都寫上替換單引號為雙引號。

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

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

⑧ sed如何將一個變數替換另一個變數

1、sed命令使用雙引號的情況下,可以使用$var(變數)直接引用:
echo | sed "s/^/$RANDOM.rmvb_/g"
13562.rmvb_
2、sed命令使用單引號的情況下,可以使用'"$var"'引用(單引號,然後雙引號,變數):
echo | sed 's/^/'"$RANDOM"'.rmvb_/g'
2442.rmvb_
sed中執行外部命令。
1、sed命令使用單引號的情況下使用'`shell command`'或者'$(shell command)'引用命令執行的結果:
echo | sed 's/^/'`echo $RANDOM`'.rmvb_/g'
7700.rmvb_# 結果
# 上面的命令使用了舊式的命令替換,也可以採用新式的命令替換方法,如下:
echo | sed 's/^/'$(echo $RANDOM)'.rmvb_/g'
13856.rmvb_# 結果
# 下面例子取用當前日期作為結果的一部分,如下:
echo | sed 's/^/'$(date +"%Y%m%d")'.rmvb_/g'
20130401.rmvb_ # 結果
2、sed命令中使用雙引號的情況下,直接`shell command`或者$(shell command)引用命令執行。
echo | sed "s/^/$(date +"%Y%m%d").rmvb_/g"
20130401.rmvb_# 結果
# 使用環境變數$RANDOM以及舊式命令替換的例子:
echo | sed "s/^/`echo $RANDOM`.rmvb_/g"
29484.rmvb_# 結果
總結一下
在sed語句裡面,變數替換或者執行shell命令,雙引號比單引號少繞一些彎子;所以,sed和變數的關鍵詞搜索的結果,眾多都寫上替換單引號為雙引號。

⑨ sed怎麼添加行變數表示

1.sed命令使用單引號的情況下,可以使用'"$var"'引用(單引號,然後雙引號,變數):

2.sed命令中使用雙引號的情況下,直接`shell command`或者$(shell command)引用命令執行。

⑩ shell腳本怎樣讀取文件的值,並賦值給變數

在sell腳本中,讀取鍵盤輸入的內容並將其賦值給shell變數的命令為:

read -p "input a val:" val echo $val

read - 從標准輸入讀取數值。這個 read 內部命令被用來從標准輸入讀取單行數據。這個命令可以用來讀取鍵盤輸入,當使用 重定向的時候,讀取文件中的一行數據。

它的語法形式一般是:

read [-options] [variable...]

(10)shell腳本sed變數擴展閱讀:

Shell是一種腳本語言,常見的腳本解釋器有:

bash:是Linux標准默認的shell。bash由Brian Fox和Chet Ramey共同完成,是BourneAgain Shell的縮寫,內部命令一共有40個。

sh: 由Steve Bourne開發,是Bourne Shell的縮寫,sh 是Unix 標准默認的shell。

常見的編程語言分為兩類:一個是編譯型語言,如:c/c++/java等,它們遠行前全部一起要經過編譯器的編譯。

熱點內容
did腳本 發布:2025-07-15 03:55:12 瀏覽:962
殘留溶劑線性濃度如何配置 發布:2025-07-15 03:54:31 瀏覽:132
部落沖突好號密碼是什麼 發布:2025-07-15 03:48:45 瀏覽:970
存儲氣瓶 發布:2025-07-15 03:48:10 瀏覽:991
數據解鎖密碼有什麼用 發布:2025-07-15 03:35:27 瀏覽:195
騰訊公認的密碼是多少 發布:2025-07-15 03:34:44 瀏覽:625
代碼txt怎麼改腳本 發布:2025-07-15 03:30:20 瀏覽:288
聲道數增加存儲容量也相應 發布:2025-07-15 03:16:19 瀏覽:271
誇克緩存在哪裡 發布:2025-07-15 03:16:11 瀏覽:708
座機查通話記錄服務密碼是多少 發布:2025-07-15 03:14:46 瀏覽:342