标签:输出 sed awk Linux print 内容 txt 三剑客
grep
只是做一个筛选并输出,不能改变文件的原内容
命令格式:
grep [
参数
] [
关键字
] <
文件名
>
注意:
可以通过
grep --help
查看
grep
的帮助信息
参数详解:
-c
只输出匹配行的计数
-n
显示匹配行及行号
-v
显示不包含匹配文本的所有行
(
反选
)
例子:
grep -c "hello" grep.txt //
显示出现
“hello”
的行数
grep -n "hello" grep.txt //
显示出现
“hello”
的行的内容,并标上行号
grep -nv "hello" grep.txt //
显示不包含
“hello”
的行的内容,并标上行号
|
sed
sed
行文件编辑工具。因为它编辑文件是以行为单位的。
命令格式:
sed [
参数
] '<
匹配条件
> [
动作
]' [
文件名
]
注意:
可以通过
sed --help
查看帮助信息
参数详解:
参数为空 表示
sed
的操作效果,实际上不对文件进行编辑
-n
取消静默输出
-i
表示对文件进行编辑
匹配条件:
匹配条件分为两种:数字行号或者关键字匹配
关键字匹配格式:
‘/
关键字
/’
动作详解:
a
在匹配到的内容下一行增加内容
i
在匹配到的内容当前行增加内容
d
删除匹配到的内容
s
替换匹配到的内容
p
查看指定内容
举例:
p
查看指定内容
sed '3p' sed.txt //
查看第三行的内容,没有取消静默输出
sed -n '3p' sed.txt //
查看第三行的内容
awk
sed -n '1,3p' sed.txt //
查看
1
到
3
行的内容
sed -n '1p;3p' sed.txt//
查看第一行和第三行的内容
s
替换匹配到的内容:
sed -i '1s/sed/SED/' sed.txt //
替换第一行第一个
sed
为
SED
sed -i '1s/sed/SED/g' sed.txt //
替换第一行所有的
sed
为
SED
sed -i '2s/sed/SED/2' sed.txt //
替换第二行第二个的
sed
为
SED
sed -i 's/sed/SED/g' sed.txt //
替换所有的
sed
为
SED
sed -i 's/SED/sed/2' sed.txt //
替换所有行的第二个
SED
为
sed
a
在匹配到的内容下一行增加内容
i
在匹配到的内容当前行增加内容
sed -i '3a\add-1' sed.txt //
在第三行后面添加
add-1
sed -i '3i\insert-1' sed.txt //
在第三行前面添加
insert-1
sed -i '1,3a\add-2' sed.txt //
在第
1-3
行后面添加
add-2
sed -i '1,3i\insert-2' sed.txt //
在第
1-3
行前面添加
insert-1
d
删除匹配到的内容:
sed -i '1d' sed.txt //
删除第一行的内容
sed -i '2,4d' sed.txt //
删除第二行到第四行的内容
sed -i '3d;5d' sed.txt //
删除第三行和第五行的内容
|
awk
awk
是一个功能非常强大的文档编辑工具,它不仅能以行为单位还能以列为单位处理文件。
命令格式
awk [
参数
] '[
动作
]' [
文件名
]
常见参数:
-F
指定列的分隔符
-f
调用脚本
-v
定义变量
常见动作:
print
显示内容
$0
显示当前行所有内容
$n
显示当前行的第
n
列内容
动作组成
BEGIN{
命令
}
初始代码块,主要和变量相关
/pattern/{
命令
}
匹配、执行代码块
END{
命令
}
结束代码块,主要和信息输出相关
内置变量
FILENAME
当前输入文件的文件名,该变量是只读的
NR
指定显示行的行号
NF
输出最后一列的内容
OFS
输出格式的列分隔符,缺省是空格
FS
输入文件的列分融符,缺省是连续的空格和
Tab
|
awk '/Hello/' awk.txt //
过滤包含
Hello
的内容
Hello awk7 awk8 awk9
[root@localhost ~]# awk '{print $1}' //
打印第
1
列的内容
awk.txt
hello
hello
Hello
[root@os39 ~]# awk 'NR==2{print $2}' awk.txt //
输出第二行第二列的内容
awk4
[root@os39 ~]# awk 'NR==2{print NR,$2}' awk.txt //
输出第二行第二列的内容,并输出行号
2 awk4
[root@os39 ~]# awk 'NR==3{print $2,$4}' awk.txt //
输出第三行第二列和第四列的内容
awk7 awk9
[root@os39 ~]# awk '{print $1}' ll.txt //
输出第一列,默认分割符为空格
1,2,3,4,5,6,7
[root@os39 ~]# awk -F ',' '{print $1}' ll.txt //
输出第一列,指定分割符为逗号
1
awk 'BEGIN{OFS=":"} {print NR,$0}' awk.txt //
设置显示分隔符为
‘:’
,显示内容
1:hello awk1 awk2 awk3
2:hello awk4 awk5 awk6
3:Hello awk7 awk8 awk9
awk -F ',' 'OFS=","{print $2,$4}' ll.txt //
输出第二列和第四列,指定分割符为逗号,输出分
隔符为逗号
2,4,5
[root@localhost ~]# ll | awk '{if ($5>=1910) print "\n" "filename:" $9 "\n"
"lenth:" $5 "B" "\n"}'
filename:initial-setup-ks.cfg
lenth:1949B
#
输出当前目录下文件大小大于
1910
的文件名和文件大小
[root@localhost ~]# ll | awk '{if ($5>=1910 && /^-/) print "\n" "filename:" $9
"\n" "lenth:" $5 "B" "\n"}'
filename:initial-setup-ks.cfg
lenth:1949B
#
输出当前目录下普通文件大小大于
1910
的文件名和文件大小
[root@localhost ~]# awk -F ' ' '{for(i=1;i<=NF;i++) print $i}' awk.txt
#
按顺序输出所有内容
[root@localhost ~]# awk -F ' ' '{for(i=NF;i>=1;i--) print $i}' awk.txt
#
按倒序输出所有内容
|
标签:输出,
sed,
awk,
Linux,
print,
内容,
txt,
三剑客
From: https://blog.csdn.net/m0_73932844/article/details/144752928