sed 's/book[^s]/books/g' file这样做有两个问题:1. 不会替换第一次books的book2. 如果是以book结尾,不会替换book我还没想到好的解决方法
sed的替换命令格式:s/A/B/g 或者 s#A#B#g 或者 s_A_B_g#只是分隔符而已,为满足格式需要.将所有制表符\t替换为|g表示全局替换,有多少次替换多少次.
<p>用正则匹配</p> id=2newscore=95sed "/^$id/s/[0-9]*$/$newscore/" file.txt >output.txt<p></p> <p>匹配以该id开头的行(^匹配行首位置),然后用s替换命令,将结尾的数字替换为newscore的值($匹配行末位置,[0-9]匹配任意一个数字,*表示出现0次或多次).结果输出到output.txt中.</p> <p>另外,id是一个shell命令(你看,这里被自动语法高亮了),建议用一个不同的变量名.</p>
sed 编辑器是 Linux 系统管理员的工具包中最有用的资产之一Linux 操作系统最大的一个好处是它带有各种各样的实用工具.存在如此之多不同的实用工具,几乎不可能知道并了解所有这些工具.可以简化关键情况下操作的一个实用 工具是 sed
sed -n '/pattern/p' file_name |sed -n 7,12p#pattern是你要查的内容#file_name是你要查的文件以上实现:打印出匹配结果中的7-12行sed -n '/pattern/{7,12p}' file_name以上实现将文件中7到12行中匹配的数据显示出来
这是老式编程语言里的标签跳转, 相当于c语言里面的goto语句可以实现 分支选择, 循环等功能sed '/^aa/ba;s/$/ no/;b;:a;s/$/ yes/' 解读如下sed是逐行扫描的/^aa/ba;s/$/ no/ 意思是如果当前行句首是aa则跳转到标签a,执行s/$/ yes/ 即在行末插入yes (这里使用替换s命令实现插入)否则执行s/$/ no/, 在行末插入no对所有行都执行这种操作, 大功告成
sed "s/zip/$zip/g" filesed双引号可以识别变量
sed -r -i "/$num/ s/.*/$num $name/g" test
djy@game-rd10:~> echo "uid=100(guest) gid=100(others) groups=10(users),11(floppy)"|sed 's/^[^(]*(\([^)]*\).*/\1/'输出 guest[^(]表示不是(^[^(]*表示不是(开头的一串,*跟在后面表示一个或者连续几个不已(开头的字符(表示guest左边的(\([^)]*\)表示不以)结束的一串字符,匹配后面\1输出.*表示guest后面的所有字符
是把双竖线||替换成双竖线中间多了一个空格?||>| | sed -i "s/||/|\ |/g" 文件名 参数-i,是zhij在原文件进行修改替换操作 我记得|不是特殊符号,不需要转义.空格哪里可以试一下有转义或者没转义