一、sed命令
sed 主要是用来将数据进行选取、替换、删除、新増的命令。我们看看命令的语法:
[root@localhost ~] # sed [选项] '[动作]' 文件名
选项
-n:一般 sed 命令会把所有数据都输出到屏幕上。如果加入此选项,则只会把经过 sed 命令处理的行输出到屏幕上;
-e: 允许对输入数据应用多条 sed 命令编辑;
-f 脚本文件名:从 sed 脚本中读入 sed 操作。和 awk 命令的 -f 选项非常类似;
-r:在 sed 中支持扩展正则表达式;
-i:用 sed 的修改结果直接修改读取数据的文件,而不是由屏幕输出动作;
a :追加,在当前行后添加一行或多行。当添加多行时,除最后一行外,每行末尾需要用“”代表数据未完结;
c :行替换,用c后面的字符串替换原数据行。当替换多行时,除最后一行外,每行末尾需用“”代表数据未完结;
i :插入,在当前行前插入一行或多行。当插入多行时,除最后一行外,每行末尾需要用“”代表数据未完结;
d:删除,删除指定的行;
p:打印,输出指定的行;
s:字符串替换,用一个字符串替换另一个字符串。格式为“行范围s/旧字串/新字串/g”(和Vim中的替换格式类似);
list.txt文件为
sed 所做的修改并不会直接改变文件的内容(如果是用管道符接收的命令的输出,则连文件都没有),而是把修改结果只显示到屏幕上,除非使用"-i"选项才会直接修改文件。
1、sed -n '2p' list.txt 输出指定行,这里是输出list.txt文件第二行
如果不加 -n 指令,会把文件的内容都输出一遍,指定行重复输出
2、sed '2,4d' list.txt 删除指定行,这里是删除【2,4】行,输出删除后的结果,但是并不会马上改动文件,
只有加上 -i才会修改文件内容 sed -i '2,4d' list.txt
3、sed '2a hello' list.txt 在指定行 后 面插入内容
4、sed '2i hello' list.txt 在指定行前面增加内容
5、sed 's/111/----/' list.txt 将list.txt文件的111都替换成----
sed '1s/111/----/g' list.txt 将指定行的某个内容替换
6、sed '1s/^/#/g' list.txt 注释掉指定行,^代表行首
二、awk命令
awk语言的最基本功能是在文件或字符串中基于指定规则浏览和抽取信息,awk抽取信息后,才能进行其他文本操作,完整的awk脚本通常用来格式化文本文件中的信息
awk '条件1 {执行语句 1} 条件 2 {执行语句 2} …' 文件名
在awk编程中,因为命令语句非常长,所以在输入格式时需要注意以下内容:
- 多个条件{动作}可以用空格分隔,也可以用回车分隔。
- 在一个动作中,如果需要执行多条命令,则需要用分隔,或用回车分隔。
- 在awk中,变量的赋值与调用都不需要加入"$"符号。
list.txt文件
1、awk '{printf $1 " " $2 "
"}' list.txt 输出list文件第1列和第2列的内容 列之间用空格区分
2、awk 'BEGIN{printf "This is a transcript "} {printf $1 " " $3" "}' list.txt 在执行命令之前输出提示语句
3、 awk 'END{printf "The Printf was End
"} {printf $1 " " $3"
"}' list.txt 在命令执行完毕之后输出提示
4、awk '/666/' list.txt 打印包含666 的行
5、awk '{if($2>333)print $3}' list.txt 输出第二列>=333对应行的第三列
也可以剔除一些特殊的行在进行条件筛选
awk有很多内建的功能,比如数组、函数等,后面带补充
参考博客https://www.cnblogs.com/lizhouwei/p/10029505.html