【linux】grep/sed/awk/sort

1、grep

grep [OPTIONS] PATTERN [FILE...]

常用options
-v 显示不被pattern匹配到的行
-i 忽略大小写
-n 显示匹配的行
-E支持正则表达式
-r:递归查找子目录中的文件

在文件夹 dir/中递归查找匹配正则表达式 “pattern” 的行,显示行号

grep -r -n pattern dir/
grep -E '^JDK$' *

2、sed

sed是一种流编辑器
参数:

a :新增add, a 的后面可以接字串,而这些字串会在新的一行出现
c :取代copy, c 的后面可以接字串,这些字串可以取代 n1,n2 之间的行!
d :删除delete,因为是删除啊,所以 d 后面通常不接任何东东;
i :插入in-place, i 的后面可以接字串,而这些字串会在新的一行出现(目前的上一行);
p :打印print,亦即将某个选择的数据印出。通常 p 会与参数 sed -n 一起运行~
s :取代,可以直接进行取代的工作哩!通常这个 s 的动作可以搭配正则表达式!例如 1,20s/old/new/g 就是啦

原始文件为:

[root@iZ2zega2jsx53zlx3r7p20Z test1]# nl test1 
     1	hi
     2	my
     3	name
     4	is 
     5	tester

在第二行增加一行字符

[root@iZ2zega2jsx53zlx3r7p20Z test1]# nl test1 | sed 2a\newline test1
hi
my
newline
name
is 
tester

删除第2到3行(行数中$表示最后一行)

[root@iZ2zega2jsx53zlx3r7p20Z test1]# nl test1 | sed '2,3d'
     1	hi
     4	is 
     5	tester

a和i的区别:
a在行数后面添加
i是在行数前面添加

[root@iZ2zega2jsx53zlx3r7p20Z test1]# nl test1 | sed '1a add after num' 
     1	hi
add after num
     2	my
     3	name
     4	is 
     5	tester
[root@iZ2zega2jsx53zlx3r7p20Z test1]# nl test1 | sed '1i add before num' 
add before num
     1	hi
     2	my
     3	name
     4	is 
     5	tester

打印第2-3行 需要加-n参数

[root@iZ2zega2jsx53zlx3r7p20Z test1]# cat test1 | sed -n '2,3p'
my
name

打印满足表达式的内容(和grep有一样的功能)

[root@iZ2zega2jsx53zlx3r7p20Z test1]# cat test1 | sed -n '/^i/p'
is 

替换文件中的内容并且保存
加g参数表示全局中所有匹配的字符都要替换
不加g只替换每一行第一次出现的字符

sed -i s/is/test111/g test1

在末尾增加一行

sed -i '$a # This is a test' test1

在每行行尾增加 字符串

sed -i 's/.$/"end"/g' test1

3 awk

AWK 是一种处理文本文件的语言,是一个强大的文本分析工具。

awk [选项] ‘条件{动作}  条件{动作} ... ...’  文件名
每行按空格或TAB分割,输出文本中的1、4项
 $ awk '{print $1,$4}' log.txt
 
 awk -F  #-F相当于内置变量FS, 指定分割字符
awk -F, '{print $1,$2}'   log.txt

 # 或者使用内建变量
 $ awk 'BEGIN{FS=","} {print $1,$2}'     log.txt
 
 # 使用多个分隔符.先使用空格分割,然后对分割结果再使用","分割
 $ awk -F '[ ,]'  '{print $1,$2,$5}'   log.txt

4 sort

-r 以相反的顺序来排序。
-t<分隔字符> 指定排序时所用的栏位分隔字符。
-k 参数设置对第二列的值进行重排

sort testfile -k 2
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值