2020-09-29

本文介绍了Linux中常用的命令行工具如grep、sed和awk的使用,重点讲解了基本和扩展正则表达式的应用,如过滤、查找、替换文本。通过实例展示了如何匹配行首、行尾、特殊字符,以及如何处理文件内容,如提取特定列和过滤特定行。此外,还提及了cut命令在取列操作中的应用。
摘要由CSDN通过智能技术生成

正则表达式分为两种
基本正则表达式
扩展正则表达式

基本正则表达式
^:以…开头
grep “^I” 文件名

: 以 . . . . . . . . 结 尾 g r e p " m :以........结尾 grep "m :........grep"m" 文件名

用正则表达过滤ls -l结果中事目录的
ls -l|grep “^d”

^KaTeX parse error: Expected group after '^' at position 25: …行号 显示空行 grep "^̲" 文件名

. :匹配任意一个字符 . : 显 示 以 . 结 尾 的 行 g r e p − n " . " 文 件 名 g r e p " . :显示以.结尾的行 grep -n "." 文件名 grep ". .grepn"."grep"." 文件名

\:转义符
查看以.结尾的行正确的语法是:grep “.$” 文件名

:匹配前一个字符0次或者0次以上
grep "0
" 文件名

.:匹配所有字符 包括空行
grep ".
" 文件名

^.:匹配多个字符开头
.
$:匹配多个字符结尾

扩展正则表达式: 应用范围 grep -E或egrep

  • 匹配前一个字符1次或多次
    egrep .+ 文件名

? 匹配前一个字符0或1次
egrep .+?

ifconfig eth0|sed -n ‘2p’|sed ‘s#^.inet##g’|sed 's# net.$##g’ 只显示ip

[:/]+ 匹配括号内的:或/字符1次或多次

|:同时匹配多个字符串
grep -E “I|my” 文件名

sed:流编辑器
常用功能有对文件实现快速增删改查

查询2,3行
sed -n “2,3p” 文件名
或 head -3 文件名|tail -2

删除含有zq字的行
sed /zq/qing 文件名(不改变原文件)

删除2,3行
sed 2,3d 文件名

将zq全部替换成qing
sed s#zq#qing#g 文件名

再zq.txt 文件第二行后追加aaa
sed ‘2a aaa’ zq.txt

awk命令参数选项说明
-F 指定字段分隔符
-v 定义或修改一个awk内部的变量

$0 当前整行记录
$n 当前记录的第n个列 字段间由FS或-F参数指定分割符
NF 当前记录中列的个数 也包含多个列
$(NF-n) 倒数第n+1列 n为数字
NR 已经读出的记录数 也就是行号 从1开始

sed -n ‘2,3p’ 1.txt 取1.txt文件的2-3行
awk ‘NR>1&&NR<4’ 1.txt 取1.txt文件的2-3行 NR表示行号 &&表示并且
awk ‘NR2,NR3’ 1.txt 取1.txt文件的2-3行 NR表示行号 逗号表示从第二到第三行
awk ‘NR2’ 1.txt 取1.txt文件的1行
awk ‘/root/’ 1.txt 取1.txt文件的root字符串的行
awk ‘/[r]/’ 1.txt 过滤出以非r字符开头的行
awk -F “:” ‘{print NR,1, 3 , 3, 3,NF}’ 1.txt
ifconfig ens33|awk 'NR
2{print $2}’ 利用管道获取ip地址

==等于
=赋值符号 a=1

过滤oldboy文件带有oldboy的行
grep “oldboy” oldboy.txt
sed -n ‘/oldboy/p’ oldboy.txt
awk ‘/oldboy/’ oldboy.txt
删除带有oldboy的行
sed ‘/oldboy/d’ oldboy.txt

分割符 awk处理的列默认是空格分隔
列符号 $1 第一行 $2 第二行 N F 最 后 一 块 列 倒 数 第 二 列 NF 最后一块列 倒数第二列 NF(NF-1)
awk ‘{print $1, 2 , 2, 2,NF}’ oldboy.txt 逗号分隔

取出/etc/passwd第三四列
awk -F “:” ‘{print $3,$4}’ /etc/passwd
取出文件的1 3 最后一列 打印出行号
awk -F ‘:’ ‘{print $1, 3 , 3, 3,NF,NR}’ /etc/passwd
取出ens33ip
ifconfig ens33|awk ‘NR==2’|awk ‘{print $2}’
取出ip
awk -F “:” ‘{print $2}’ c6.txt |awk ‘{print $1}’

cut命令
cut取列取文件的1 2 3 /etc/passwd
cut -d: -f1,2,3 /etc/passwd
cut按字符数取列
cut -c 1 /etc/passwd 1-10 取1-10的字符

打印uid小于10的 登入shell为bash的用户
awk -F “:” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF=="/bin/bash"{print $1}’ /etc/passwd
awk -F “:” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF~/bash/{print $1}’ /etc/passwd
awk -F “[😕]” ‘KaTeX parse error: Expected 'EOF', got '&' at position 5: 3<10&̲&NF==“bash”{print $1}’ /etc/passwd

linux三剑客

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值