linux文本处理常用命令,Linux文本处理常用命令

Linux文本处理常用命令:grep、sed、printf、awk、cut、sort

1. grep

按行查找字符,输出包含字符的行

用法grep ‘key’ test.txt

cat test.txt|grep ‘key’参数含义及示例-n输出结果加行号

–color=auto匹配的关键字高亮显示

-A2输出匹配行的后两行

-B2输出匹配行的前两行

-v反向查找,即输出不包含关键字的行

-i关键字匹配时忽略关键字大小写

例如:1grep 'o{3}'  //查找两个o,这里需要注意,{}在shell里有特殊意义,因此需要转义。

egrep:

正则表达式分为基本正则表达式和扩展正则表达式,grep只支持基本正则表达式,如果要使用扩展正则表达式,需要使用egrep命令

列如:1

2

3egrep '123|1234' //查找123或1234

egrep '1(23|234)5' //查找1235或12345

egrep '1(23)+45' //查找1X45,其中X是一个或一个以上的‘23’字符串

2.sed

sed可以用来做行删除、行新增、行选取、行替换、字符串替换

使用方式:cat test.txt | sed ‘2d’ 或者 sed ‘2d’test.txt行删除

sed ‘2,5d’ //删除第2-5行

sed ‘3,$d’ //删除第3到最后一行

sed ‘/^$/d’//删除空行

行新增

sed ‘2a abc’ //在第二行下面追加一行“abc”,a代表append

sed ‘2i abc’ //在第二行上面插入一行 “abc”,i代表insert

sed ‘2a a

b

c’  //在第二行下面追加三行 “a”、”b”、”c”,只需要每行结尾加””即可。

行选取

sed -n ‘7,9p’  //选取第5到7行输出,必须加-n参数,不然效果就是所有行都被输出,而7到9行输出两次。

行替换

sed ‘2,5c abc’  //将第2到5行替换为一行字符串”abc”

字符串替换

sed ‘s/要被替换的字符串/新的字符串/g’ /可以是#号之类的,在被替换的字符串包含/时,可以考虑别的分隔符。要被替换的字符串可以是

正则表达式

注意:1

2

3

4

5

6

7

8

9

10操作特定区间或规则的行

sed '8,$s/aa/AA/g' test.txt 对第8行到文件末尾的所有行进行搜索替换操作

sed '/^[0-9]/s/aa/AA/g' test.txt 正则表达式表示对所有以数字开头的行,执行s操作

sed的正则中 () 和 {m,n} 需要转义

. 表示任意字符

* 表示零个或者多个

+ 一次或多次

? 零次或一次

| 表示或语法

3. printf

格式化并打印数据

printf ‘%10s %10s %10s %10s %10s n’ cat test.txt %10s代表这一列的宽度固定为10个字符

%-10s 指一个宽度为10个字符(-表示左对齐,没有则表示右对齐)

4. awk

NF :每一行分隔后的列数

NR :行号

FS=”,”:以”,”分割行

cat test.txt |awk ‘NR==1 {printf “%10s %10s %10s %10s %10s n”,$1,$2,$3,$4,”Total”};NR>1 {printf “%10s %10s %10s %10s %10s n”,$1,$2,$3,$4,$2+$3+$4}’加入条件判断后,awk的格式为: awk ‘条件1 {命令1};条件2{命令2}’

条件判断有以下逻辑运算:1

2

3

4

5

6>

<

>=

<=

==  //注意判断相等要用两个等号

!=

可以直接运算行内列的值($1、$2、$3)。

5. 其他

1)cut切割字符以“,”切割文件并取出第1列

cat test.txt |cut -d ‘,’ -f 1| sort | uniq -c | sort -rn -k1 > new_test.txt

2)sort排序的时候注意默认是按照字典的方式排序,如果按照数字时则必须加上-nuniq去除重复,只能去除相邻的重复,所以要先排序,后去除重复命令用途grep/egrep关键字查找

sed1.行的删除、添加、替换、选取

2.关键字替换

printf文本格式化输出

awk1. 将每行按分隔符拆分成列并选取某些列

2. 通过逻辑判断对不同行进行不同的处理

3.对一行中的几列数值进行计算

cat切割字符

sort排序

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值