llgd.net
当前位置:首页 >> linux sED命令中正则表达式解析 >>

linux sED命令中正则表达式解析

例如字符串是12345old67890old 那么上面语句分解如下: s/ 是启用替换 替换内容如下: \(.*\) 对应12345 并标记为\1 old 对应old \(.*old\) 对应67890old 并标记为\2 替换内容如上: 那么替换后的格式如下: /\1new\2 对应 12345new67890old

不能。语法错误。 sed的语法是 s/exp1/exp2/ exp1和exp2不能用\d,\w,\?之类的形式,\w要用[a-zA-Z], \d要用[0-9]来替代。

sed 's/正则/替换为/g' 文件 s表示替换命令, /正则/是查找内容 "替换为"可以是 常规字符串也可以是前面正则中的捕获, g表示全局替换,不加g只替换1次。

现在有如下一串字符串: "asdfkjasldjkf"shiner"df 需求: 需要提取出shiner子字符串。 命令如下: [root@localhost /]$ echo "asdfkjasldjkf\"shiner\"df" | sed 's/\(.*\)"\(.*\)"\(.*\)/\2/g' shiner 命令解释 s: 表示替换命令 \(.*\)" : 表...

a=$( expr 'helloworld20140501.txt' : '.*\([0-9]\{8\}\).*' ) echo $a linux shell 中可以将命令的结果赋值给变量,$(命令)这种格式将返回命令执行后的结果字符串 上面命令执行后,变量a的值是20140501 a=`echo 'helloworld20140501.txt'|sed ...

你不转义的话大括号当成普通字符了

sed命令行格式为: sed [-nefri] ‘command’ 输入文本 常用选项: -n∶使用安静(silent)模式。sed默认的处理结果是输出到STDOUT。但如果加上 -n 参数后,则只有经过sed 特殊处理的那一行(或者动作)才会被列出来。 -e∶直接在指令列模式上进行 sed ...

sed内部有模式空间和保留空间之分。 通常情况下,sed从文件中逐行读入内容到模式空间内进行处理,一次只处理一行,所有你没法直接匹配多行内容。 涉及用sed处理多行文本的问题,首先考虑直接匹配地址范围来处理,不行的话其次还可以考虑利用sed...

echo abcd123 | sed 's/\([a-z]*\).*/\U\1/' \(..\) 保存匹配的字符,如s/\(love\)able/\1rs,loveable被替换成lovers 上例中\1就是指前面的\([a-z]*\) \U 是转换成大写 这样就明白了,\U\1指 [a-z]*全部转成大写。 invalid reference \1 on `s'...

通配符是系统级别的,而正则表达式需要相关工具的支持: egrep, awk, vi, perl。 在文本过滤工具里,都是用正则表达式,比如像awk,sed等,是针对文件的内容的。 通配符多用在文件名上,比如查找find,ls,cp,等等。 通配符包括:* ? [] [!] [-]...

网站首页 | 网站地图
All rights reserved Powered by www.llgd.net
copyright ©right 2010-2021。
内容来自网络,如有侵犯请联系客服。zhit325@qq.com