当前位置:首页 » 编程软件 » 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等,它们远行前全部一起要经过编译器的编译。

热点内容
分布式缓存部署步骤 发布:2025-05-14 13:24:51 浏览:610
php获取上一月 发布:2025-05-14 13:22:52 浏览:89
购买云服务器并搭建自己网站 发布:2025-05-14 13:20:31 浏览:688
sqlserver建立视图 发布:2025-05-14 13:11:56 浏览:484
搭建httpsgit服务器搭建 发布:2025-05-14 13:09:47 浏览:255
新电脑拿回来我该怎么配置 发布:2025-05-14 13:09:45 浏览:240
视频服务器新建ftp用户 发布:2025-05-14 13:03:09 浏览:225
php花生 发布:2025-05-14 12:54:30 浏览:550
java人才 发布:2025-05-14 12:29:10 浏览:649
如何打开软密码 发布:2025-05-14 12:28:55 浏览:427