Linux三剑客对数据处理

grep配合正则表达式可以灵活的查找文本内容。
但是有些时候我们不仅仅需要找出数据,还需要按照一定的规则进行整合,格式化排列

文本文件内有一百条规范数据,如下:

John Doe, 25, Engineer
Alice Smith, 30, Data Scientist
Bob Johnson, 22, Intern
Charlie Brown, 35, Manager
...

想要查找某条数据,或者符合条件的数据可以使用grep+正则,找出符合条件的行。
grep

grep -E '*John ' data.txt
用于查找名字首个单词时John的行

在这里插入图片描述
然而此时找出的数据,仍然是整行为单位,我们想把姓名,年龄,职业区分开或者对他们做什么处理时,grep就不够用了;这时候我们可以使用awk。


awk

awk -F ', '  '$2>30 { printf "名字: %s, 年龄: %d, 职业: %s \n", $1, $2, $3}' data.txt
-F 接受字符串作为分割符,也可以是正则表达式
pattern{内置语句 }实现对文本项匹配和对分割后的元素进行处理

在这里插入图片描述

sed
主要用来自动编辑一个或多个文件;简化对文件的反复操作;编写转换程序等。

...  | sed 's/职业: /job: /'
's/old/new/'
用新内容代替传入的旧内容

在这里插入图片描述
组合:找出文件中大于25岁的人,将他们的信息格式化显示
在这里插入图片描述

#!/bin/bash
INPUT_FILE="data.txt"
echo "---------------年龄大于25岁的人---------------"
grep -E ', [2][6-9]|, [3-9][0-9]' "$INPUT_FILE" | \
awk -F ', '  '{ printf "名字: %s, 年龄: %d, 职业: %s \n", $1, $2, $3}' | \
sed 's/职业: /job: /'

[2][6-9]|, [3-9][0-9]' 表示匹配包含26-29或30-99的行
grep:
过滤/搜索的特定字符。可使用正则表达式能配合多种命令使用
-E 扩展正则表达式
awk:
-F fs fs指定输入分隔符,fs可以是字符串或正则表达式,如-F:,默认的分隔符是连续的空格或制表符
-v var=value 赋值一个用户定义变量,将外部变量传递给awk
-f scripfile 从脚本文件中读取awk命令

sed:
options:可选参数,用于控制 sed 的行为。
command:要执行的命令,通常是替换、删除等。
file:输入的文本文件。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值