sed 正则表达式(sed ’s/^\(.\).*/\1/g’ | tr ’a-z’ ’A-Z’是什么意思)

本文目录
- sed ’s/^\(.\).*/\1/g’ | tr ’a-z’ ’A-Z’是什么意思
- 解释sed 正则表达式 echo $1 > 1.tmp sed -e :a -e ’s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta’ 1.tmp;
- 如何用Sed和正则表达式提取子字符串
- sed正则表达式如何替换匹配的中间内容
sed ’s/^\(.\).*/\1/g’ | tr ’a-z’ ’A-Z’是什么意思
加入修改的文件a.txt内容是:
zapple
2pearl
Ssmilence
#potato
sed
’s/^\(.\).*/\1/g’
a.txt
|
tr
’a-z’
’A-Z’
结果是:
Z
2
S
#
分析:
s/^\(.\).*/\1/g是正则表达式的替换
s/A/B/
就是A替换B,而A是^\(.\).*(^表示行首,\(
和\)是有特殊用途的,表示把括号中的内容剔除出来,会一次放到\1
\2
\3这些变量中的,若果有多个括号的话,\(
和\)中见的.表示匹配任意一个字符),这样通过sed
’s/^\(.\).*/\1/g’内容变成了
z
2
S
#
tr
’a-z’
’A-Z’相当于uc,字符由小写转换成大写
解释sed 正则表达式 echo $1 > 1.tmp sed -e :a -e ’s/\(.*[0-9]\)\([0-9]\{3\}\)/\1,\2/;ta’ 1.tmp;
ta 的意思是,如果 s 匹配成功,则跳到 :a 的地方。(还有一个指令是 ba,它是无条件跳到 :a)
s 指令的意思就是找数字,并把最后3个数字单分出来,替换成 \1,\2 的用意用意相当于在最后三个数字之前加上 `,’。
如果这个替换执行成功,那么 ta 跳回来,就会重新执行 s 指令。最终的效果就是把 $1 里的数字加上千位分隔符。在数次划分后,这个数字最终不满三位了,s 指令会执行失败,这时 ta 不产生作用,便跳出循环。
如何用Sed和正则表达式提取子字符串
现在有如下一串字符串:
"asdfkjasldjkf"shiner"df
需求:
需要提取出shiner子字符串。
命令如下:
$ echo "asdfkjasldjkf\"shiner\"df" | sed ’s/\(.*\)"\(.*\)"\(.*\)/\2/g’
shiner
命令解释
s: 表示替换命令
\(.*\)" : 表示第一个引号前的内容
"\(.*\)":表示两引号之间的内容
)"\(.*\):表示引号后的内容
\2: 表示第二对括号里面的内容
括号里的表达式匹配的内容,可以用\1,\2等进行引用,第n个括号对内的内容,就用\n引用。
这个命令的意思是:
用\2代表的第二个括号的内容(shiner)去替换整个字符串,这样就得到了我们所需要的子字符串了。
sed正则表达式如何替换匹配的中间内容
这里可以通sed的分组来完成, 在sed中通过()来进行分组,后面通过\1 来引用第一个分组 \2第二个...以此类推. 这里我们把\2改为了你想要的a就可以了。
# sed ’s/\(\)/\1a\3/g’ a.txt

更多文章:
全球新冠肺炎疫情背景下航运发展(盐田港复苏日志:半年历劫从“低谷”到“爆仓” 疫情之后巨轮如何越洋航行)
2026年9月7日 17:10
matlab求解带字母参数方程组(我想matlab求一个关于x,y的方程组 ab c d f e h m n 都是参数)
2026年9月7日 16:30
oracle中的循环语句(下面哪个不是oracle程序设计中的循环语句 a for)
2026年9月7日 15:30
电脑里2个系统怎么删除一个(电脑开机显示有两个系统,如何删除一个)
2026年9月7日 12:20
scrollthrough意思(“scroll”是什么意思)
2026年9月7日 08:00
怎么激活keygen(注册机如何激活cad2008一个简单激活cad2008的方法)
2026年9月7日 06:30



