如何用sed命令,截取变量中的某个字符串
sed命令行格式为:
sed [-nefri] ‘command’ 输入文本
常用选项:
-n∶使用安静(silent)模式。sed默认的处理结果是输出到STDOUT。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。
-e∶直接在指令列模式上进行 sed 的动作编辑(可以同时执行多条操作命令);
-f∶直接将 sed 的动作写在一个文件内, -f filename 则可以执行 filename 内的sed 动作;
-r∶sed 的动作命令是扩展型正则表达式。(预设是基础正则表达式)
-i∶直接修改读取的档案内容,而不是由STDOUT输出。
常用命令:
a ∶新增, a 的后面可以接字串,而这些字串会在新的一行出现(目前的下一行)
c ∶取代, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d ∶删除,删除行;
i ∶插入, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p ∶列印,亦即将某个选择的资料印出。可用于查找功能,sed -n ‘/查找字符串/p’可实现对字符串的查找,类似于grep。通常 p 会与参数 sed -n 一起运作
s ∶取代,直接进行取代的工作,通常这个 s 的动作可以搭配正则表达式
Linux sed命令与正则表达式
1. "${name_for_deal[@]}" 去掉双引号.因为 for A in B 结构中,B是一个以空格分隔的数据集合.而加了双引号就被当做一个整体字符串了.2. sed的单引号会屏蔽$的取值功能,shell变量${name}要得到解析必须拿到单引号外面来.即,在${name}前闭合单引号,之后再重新开始.sed -i ‘/^[ \t\*]*Author[ \t]*:[ \t]*’${name}’/d’ $file
sed命令 sed – e s/\(.*// 什么意思
. 匹配一个非换行符的字符 如:/s.d/匹配s后接一个任意字符,然后是d. * 匹配零或多个字符 如:/*sed/匹配所有模板是一个或多个空格后紧跟sed的行. ”.*”会在第一个匹配后在匹配0个或多个字符. 这是对.*的定义,你可以把.*看做是任意多个字符.
linux命令 sed 请问有哪位大大知道这个sed 命令是什么意思吗? sed ‘s/\//\\\//g’
截取或修改字符串,打印到屏幕上。
使用方法:sed 参数 ‘动作’ 动作对象
如果用-i参数将修改文档的内容,你的sed ‘s/\//\\\//g’这个我举一个类似的再分析你的。
sed ‘s/old/new/g’ ***
这个就是把***文档里面的old这个词换成new这个词。
你的sed ‘s/\//\\\//g’里面既是把,/换成\\/。s/\//是一部分/\\\//g又是一部分,s后面的//之间就是要替换的词语和上面的old类似,由于/有特殊定义,所以用\转意成普通符号/,/\\\//g从第一符号到g前面的/之间就为替换old的new,为\\/前面两个\就是\没有特殊意义所以为\\,后面g前面的第二个/由于有特殊意义所以用\来转意,所以new为\\/。在s/old/new/g里面的/为固定格式所需要的,所以想打印出/来的话,要用\来转意,linux特殊字符转意都用\。
详细的参数信息用man page,这个是比不可少的,因为一个人不可能把那些东西全部记得,如果你硬要记还不如记唐诗三百首呢。只要知道这个命令或是这个工具的工作原理,使用方法自然就明了,要用到的时候查一下即可,没有必要和自己过不去。
linux中sed命令如何运用‘\ ’ 反斜杠?
路径”../syslog/tmp/”替换为”/data/syslog/tmp”
首先要搞清楚,转义符\的作用是消除有特殊含义字符的特殊意义,使其还原为普通字符。
sed -i ‘s/\.\.\/syslog\/tmp\//\/data\/syslog\/tmp/’ file.ini
点号.在正则表达式中有其特殊含义(表示任意一个字符),所以要表示点号本身,需要使用转义符。
sed替换命令的格式一般为 s/…/…/ ,所以如果里面的内容也包含 / ,比如你这里的路径,为了区分,也需要转义。
最后说明一下,这样看起来很混乱,比较容易搞错。
其实sed的替换命令格式不一定要是 s/…/…/,下面这样也都可以:
s#…#…#
s_…_…_
即命令s后可以跟任意字符,只要跟替换内容不重复即可。这样,路径里的/就不再需要转义了。
shell脚本中的sed s/ /\ /g’这个命令是啥意思
sed的替换命令格式:s/A/B/g 或者 s#A#B#g 或者 s_A_B_g#只是分隔符而已,为满足格式需要.将所有制表符\t替换为|g表示全局替换,有多少次替换多少次.
sed正则表达式
-e ‘s/:\+\s\+/:/’ -e ‘s/ /_/g’
把每一行 第一次出现的 “连续 n 个 : 及 后面的m个空格” 替换成 : , 再把这一行中剩余的类似匹配内容替换成 _ , 其中 n >= 1, m>=1
比如
如果某行的内容是
sss:: ppp: MMM
则替换后变成
sss:ppp_MMM
然后
-e ‘/^$/d’
删除空行
然后
-e ‘s/[(%)]//g’
把每行出现的 ( 或者 % 或者 ) 字符全部删除,
比如
abc()% 被替换成 abc
然后
-e ‘/^1/d’
将 以字符 1 开头的行删除
最后
-e ‘s/[(*)]//’
把每行第一次出现的 ( 或者 * 或者 ) 字符删除。
注意,上面的每一个 -e 命令处理的对象都是前一条 -e 命令处理完后的结果。
所以假定有一个文件内容为
abc #unchanged line
sss:: ppp: (M%MM)zzz :::: end # change to sss:ppp_MMMzzz _end
1me #this line will be deleted
2123(* #change to 2123
end of file #unchanged
经过上面的命令后,变成
abc #unchanged line
sss:ppp_M%MMzzz _end # change to sss:ppp_MMMzzz _end
2123 #change to 2123
end of file #unchanged
linux 的sed命令解释 sed ‘:t;N;s/\n/,/;b t’ 将换行符换成逗号
:t 定义label "t" b t 转到label "t" 继续执行 N 先读入一行到sed的模板空间,加个换行符(\n),再向sed模板空间追加下一行(之后sed 对模板空间中的内容执行s/\n/,/替换,并显示替换后的内容)
sed命令替换指定字符串后面内容
sed -r ‘s/(ATTR\{address\}==")[^"]*/\1ABC/’ A 结果得到: SUBSYSTEM=="net", ACTION=="add", DRIVERS=="?*", ATTR{address}=="ABC", ATTR{type}=="1", KERNEL=="eth*", NAME="eth0"
sed – i ‘s/inn/out/g’ test.txt cshell语法格式请解
sed是Linux下的命令,上面的句子可以写在shell程序里头执行,test.txt为当前路径下的文件test.txt,若为其他路径写成 ../aaa/bbb/test.txt 即可 或者直接在vi编辑器里使用:s/inn/out/g 也可