shell之grep

grep

grep [选项]… 查找条件 目标文件
选项:

-m  # 匹配#次后停止
grep -m 1 root /etc/passwd   #多个匹配只取第一个

实验二

 -v 显示不被pattern匹配到的行,即取反
grep -Ev '^[[:space:]]*#|^$' /etc/fstab

 -i 忽略字符大小写  #可有可无

 -n 显示匹配的行号

 

-c 统计匹配的行数

 

 -o 仅显示匹配到的字符串

 

-E   使用ERE,相当于egrep,使用扩展正则
-F   不支持正则表达式
-f   file 根据模式文件,处理两个文件相同内容 把第一个文件作为匹配条件
[root@localhost opt]# grep -f 123.txt 456.txt  #匹配两个文件中内容相同的部分
a
b
c
ee

[root@localhost opt]# grep -r a /opt #递归过滤目录中的文件
匹配到二进制文件 /opt/.yonghu.sh.swp
/opt/123.txt:a
/opt/456.txt:a
[root@localhost opt]# ln -s 123.txt b
[root@localhost opt]# grep -R a /opt
匹配到二进制文件 /opt/.yonghu.sh.swp
/opt/123.txt:a
/opt/456.txt:a
/opt/b:a


-r   递归目录,但不处理软链接
R   递归目录,但处理软链接

[root@test1 opt]# cat 123.txt |grep -v '^$' >test.txt  //将非空行写入到test.txt文件
[root@test1 opt]# grep "^b" 123.txt    //过滤已b开头
[root@test1 opt]#grep '/$'  123.txt    //过滤已/结尾

sort、uniq、tr命令:
sort命令
以行为单位对文件内容进行排序,也可以根据不同的数据类型来排序
语法格式:
sort 选项 参数
cat file | sort 选项

常用选项:
-f:忽略大小写,默认会大写字母排在前面
-b:忽略每行前面的空格
-n:按照数字进行排序
 

快捷去重——uniq:
uniq命令用于报告或者忽略文件中连续的重复行,常与sort命令结合使用。

格式:
uniq [选项] 参数  ​
cat 文件| uniq 选项
-c    统计连续重复的行的次数,并且合并重复的行

 

uniq -u test.txt   ---只显示出现一次的行

uniq -d test.txt   ---只显示连续重复的行

sort -n test.txt | uniq -c  ---对重复的数据行计数,并且去重输出

sort -n test.txt | uniq -u ---只展示不重复的数据行

sort -n test.txt | uniq -d ---只展示重复的数据行


tr命令:
常用于对来自标准输入的字符进行替换、压缩和删除

语法格式:
tr 选项 参数

常用选项:
-c:保留字符集1的字符,其他的字符(包括换行符\n)用字符集2替换

参数:

字符集1:
指定要转换或删除的原字符集。当执行转换操作时,
必须使用参数”字符集2“指定转换操作时,必须使用参数”字符集2“指定转换的目标字符集。
但执行删除操作时,不需要参数”字符集2“

字符集2:
指定要转换成的目标字符集

echo 192.168.233.22 | tr '.' ' '   ---把"." ,替换成空格

echo ABC | tr "A-Z" "a-z"  ---大写替换成小写

echo abc | tr -c 'ab' 'a' ---保留了ab,替换了c,输出aa

echo abc | tr -d 'ab' ---删除ab,打印c

sort -n test.txt | tr -s '\n' ----排序输出,压缩空行为一个

echo $PATH | tr -s ":" "\n"  ---把":"替换为换行


快速裁剪命令——cut:

expr substr  截取方法
[root@localhost tr]#i=12345678
[root@localhost tr]#expr substr $i  1   3
123
[root@localhost tr]#expr substr $i 2 5
23456

cut截取方法 
对字段进行截取和剪裁
格式: 
格式一:cut [选项] 参数
格式二:cat file | cut [选项] 

-d              指定分隔符(默认分隔符为Tab)
-f               按字段进行截取。指定第n个字段;自取前三
 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: grep是一种在文本文件中查找指定字符串的命令,它可以在文件中搜索指定的字符串,并将包含该字符串的行打印出来。grep命令可以用于查找文件中的单词、短语、正则表达式等内容,是Linux系统中常用的命令之一。在shell脚本中,grep命令可以用于过滤文件内容,从而实现一些自动化的操作。 ### 回答2: grep是一个强大的文本搜索工具,可以在文件中查找匹配给定模式的文本行,并输出结果。 首先,我们需要使用grep命令的基本语法:grep [选项] 模式 [文件...]。其中,选项可以选择是否忽略大小写(-i)、输出匹配行的行号(-n)、显示匹配行之前或之后的多少行内容(-A、-B、-C),等等。 例如,我们要在文件file.txt中查找包含"hello"的文本行,可以使用以下命令: grep "hello" file.txt 如果我们要查找所有以"hello"开头的文本行,可以使用正则表达式的方式: grep "^hello" file.txt 如果我们要查找不区分大小写的"hello",可以使用-i选项: grep -i "hello" file.txt 如果我们要显示匹配行的行号,可以使用-n选项: grep -n "hello" file.txt 除了文件,我们还可以通过管道符(|)将grep命令与其他命令结合使用,进一步筛选数据。例如,我们可以使用ls命令来显示当前目录下所有以".txt"结尾的文件,并在这些文件中查找"hello": ls *.txt | grep "hello" 需要注意的是,grep命令匹配的是整个文本行,而不是仅仅匹配某个词语。如果我们只想查找某个单词,可以使用正则表达式的单词边界,如\bhello\b。 综上所述,grep是一种功能强大的文本搜索工具,可以通过简单的命令行参数和正则表达式来满足各种搜索需求。 ### 回答3: shell脚本中的grep命令是用于在文本文件中搜索指定的字符串模式,并输出匹配的行。以下是有关grep命令的一些重要信息。 grep命令的基本语法为: ``` grep [选项] 模式 [文件名] ``` 其中,模式是要搜索的字符串模式,文件名是要在其中搜索模式的文件名。如果没有指定文件名,grep命令将从标准输入中读取数据。 下面是grep命令的一些常用选项: - `-i`:忽略大小写进行匹配; - `-v`:输出不匹配的行; - `-n`:输出匹配的行及行号; - `-r`:递归地搜索指定目录及其子目录下的文件; - `-w`:只匹配整个单词,而不是字符串的一部分; - `-A n`:在匹配行的后面显示n行的内容; - `-B n`:在匹配行的前面显示n行的内容; - `-C n`:在匹配行的前后各显示n行的内容。 以下是一些grep命令的示例: 1. 在文件file.txt中搜索字符串"hello":`grep "hello" file.txt` 2. 忽略大小写地搜索字符串"world"并输出行号:`grep -i -n "world" file.txt` 3. 在当前目录及其子目录下搜索文件内容中包含"error"的文件:`grep -r "error" .` 4. 输出不包含字符串"foo"的行:`grep -v "foo" file.txt` 通过使用grep命令,我们可以方便地在文件中搜索指定的字符串模式,从而能够快速定位和处理所需的信息。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值