sed和awk简明教程-面试

sed option script file
option : -e script -f file -n 分别表示从多行script多行输入、文件中获得输入和不要为每条命令生成输出,
等待print来输出。
-n表示不输出原来的问本行
script:
替代:
s/pattern/replacement/flags

flags:
/number如: sed‘s/test/tester/5’file1 表示将file1中的第5处的匹配位置.
/p 表示原来的行也输出
/w file 表示结果输出到file中
/g 表示替代所有已有文本出现的地方.
行寻址:
address command或者
address {
command1
command2
}
(1)数字寻址:address 可以使用单个数字或者num1,num2表示num1和num2行之间的部分.如
sed ‘2,$s/dog/cat’ animal.txt
(2)文本过滤器寻址
/pattern/command
表示只在匹配pattern模式的行执行command命令。

例子:
(1)将/etc/passwd文件中的/bin/bash替换成/bin/csh
sed -p ‘s!/bin/bash!/bin/csh!’ /etc/passwd
删除:d命令
sed ‘d’ data1 #删除data1所有行
sed ‘/1/,/3/d’ data1 #从匹配模式1的地方打开行删除功能,匹配模式2的地方关闭删除行功能.
插入和追加:
i和a命令:格式为:sed ‘[address]command\newline’
注意:插入总在数据流的前面,添加总在数据流的后面。
例子:
cat test |sed ‘$a\fsdf’
修改行:c命令。
sed ‘linenumc\sfafafa’ test
置换命令:y命令-唯一可以处理单个字符的sed编辑命令。
[address]y/inchars/outchars/
sed 'y/123/789/’data8 将data8中所有的1置换成7 2置换成8 3置换成9
y命令为全局命令,无法控制只替代文档中的指定字符。

一些技巧:
打印命令:p打印文本行,=用于打印行号 l用来列出行
可以使用{}执行多条命令
如:
`sed -n '/num1/{

p
}`
注意:
sed 使用-i表示直接在文件中修改
sed 只有修改插入(i),添加(a),修改©命令式使用’'作为分割

1 sed ‘s/^/#/’ data
在data每句行首加一个’#’
同理可以在行尾加#
2 sed ‘s!abc>!abd!’ test 表示只替代以abc结尾的abc字符成abd

^ 表示一行的开头。如:/^#/ 以#开头的匹配。
$ 表示一行的结尾。如:/}$/ 以}结尾的匹配。
< 表示词首。 如 <abc 表示以 abc 为首的詞。
> 表示词尾。 如 abc> 表示以 abc 結尾的詞。
. 表示任何单个字符。

  • 表示某个字符出现了0次或多次。
    [ ] 字符集合。 如:[abc]表示匹配a或b或c,还有[a-zA-Z]表示匹配所有的26个字符。如果其中有表示反,如[a]表示非a的字符

sed ‘s!abc>!abd!’ test 表示只替代以abc结尾的abc字符成abd
如果我们需要一次替换多个模式,可参看下面的示例:(第一个模式把第一行到第三行的my替换成your,第二个则把第3行以后的This替换成了That)

sed’1,3s/my/your/g; 3,$s/This/That/g’ my.txt

我们可以使用&来当做被匹配的变量,然后可以在基本左右加点东西。如下所示:
$ sed’s/my/[&]/g’ my.txt

命令打包:
sed '3,6 {/This/{/fish/d}}'pets.txt
gawk

什么是架构设计?架构设计看这篇文章就够了

Redis为什么这么快?

重磅:解读2020年最新JVM生态报告

BIO,NIO,AIO 总结

JDK8的新特性,你知道多少?

回复“资料”,免费获取 一份独家呕心整理的技术资料! image

发布了53 篇原创文章 · 获赞 16 · 访问量 15万+

猜你喜欢

转载自blog.csdn.net/gexiaochuan122/article/details/45693207