LinuxShell脚本攻略--第四章 让文本飞

grep

$ grep pattern filename    #搜索filename下的包含pattern的行$ grep "pattern" filename$ grep -E "[a-z]+" filename  #正则匹配添加参数-E或者下面的egrep$ egrep "[a-z]+" filename$ echo this is a line. | egrep -o "[a-z]+\."  #只输出匹配的文本部分 -oline.$ grep -v match_pattern file  #打印包含match_pattern行之外的所有行  -v(invert)$ grep -c "text" filename    #打印包含匹配字符串的行的数量

上面只是显示的匹配的行的数量并不是匹配的次数,想获取匹配项的数量,可以使用下面的技巧

$ echo -e "1 2 3 4\nhello\n5 6" | egrep -o "[0-9]" | wc -l
6
#打印包含匹配字符串的行号$ cat sample1.txt
gnu is not unix
linux is fun
bash is art$ grep linux -n sample1.txt      #-n打印匹配的行号2:linux is fun$ cat sample1.txt | grep linux -n
#打印模式匹配所位于的字符或字节偏移
$ echo gnu is not unix | grep -b -o "not"
7:not

-b 和-o 总是配合使用。

#搜索多个文件并找出匹配文本位于哪一个文件中
$ grep -l linux sample1.txt sample2.txt  #-l找出匹配的文本列表
sample1.txt
sample2.txt

和-l 相反的选项是-L ,它会返回一个不匹配的文件列表。

#递归搜索文件
$ grep -i "text" . -R -n        #-R 递归搜索,-n打印行号,-i不考虑大小写

#用 grep 匹配多个样式$ echo this is a line of text | grep -e "this" -e "line" -o    #-e指定多个匹配样式thisline

#在 grep 搜索中指定或排除文件#目录中递归搜索所有的 .c和 .cpp文件$ grep "main()" . -r --include *.{c,cpp}   #--include查找符合规则的文件 *.{c,cpp}会扩展成 *.c *.cpp#搜索中排除所有的 README 文件$ grep "main()" . -r --exclude "README"   #排除README文件,如果是文件夹--exclude-dir。如果是文件列表,使用 --exclude-from FILE 。

#使用0值字节作为后缀的 grep 与 xargs#-Z输出以0值作为终结符的文件名(\0),xargs -0读取输入并用0值字节终结符分隔文件名.$ grep "test" file* -lZ | xargs -0 rm    #-Z 通常和 -l 结合使用

$ seq 10 | grep 5 -A        #要打印匹配某个结果之后的3行,使用 -A 选项$ seq 10 | grep 5 -B 3       #要打印匹配某个结果之前的3行,使用 -B 选项$ seq 10 | grep 5 -C 3       #要打印匹配某个结果之前以及之后的3行,使用 -C 选项

sed

时间: 2024-10-24 15:59:54

LinuxShell脚本攻略--第四章 让文本飞的相关文章

LinuxShell脚本攻略--第一章

使用 shell 进行数学运算: #!/bin/bash no1=4; no2=5; let result=no1+no2 echo $result result=$[ $no1 + no2 ] result=$(( no1 + 50 )) result=`expr 3 + 4` result=$(expr $no1 + 5) echo "4 * 0.56" | bc result=`echo "$no * 1.5" | bc` echo $result echo

《Linux Shell 脚本攻略》读书笔记

本书主要讲解一些linux shell命令的用法,讲解一些shell的奇技淫巧. 第一章 小试牛刀 主要介绍一些基本shell指令 终端打印:echo.printf 别名:alias 终端处理工具:tput,stty 日期:date 第二章 命令之乐 介绍一些基本命令 读取.显示.拼接文件:cat 录制回放会话:script,scriptreplay 文件查找:find 提供管道参数:xargs 转换:tr 排序.唯一:sort.uniq 临时文件:mktemp 分割文件和数据:split,cs

《Linux Shell脚本攻略》 笔记 第四章:高效文本处理

<Linux Shell脚本攻略> 笔记 第四章:高效文本处理 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang ./right.txt:1:1 yang man //忽略大小写匹配 [[email pr

老李分享:《Linux Shell脚本攻略》 要点(四)

老李分享:<Linux Shell脚本攻略> 要点(四) 1.IP地址的正则表达式: [0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3}\.[0-9]{1,3} 2.grep用法 //在多级目录中对文本进行递归检索 [[email protected] program_test]# grep "yang" ./ -Rn ./test.txt:6:laoyang./right.txt:1:1 yang man //忽略大小写匹配 [[email protec

《Linux Shell脚本攻略》 笔记 第一章:Shell起步基础

<Linux Shell脚本攻略> 笔记 第一章:Shell起步基础 1.变量:在bash中,每一个变量的值都是字符串.无论你给变量赋值时,有没有使用引号,值都会以字符串的形式存储. 2.var=value; //赋值操作 var = value: //相等操作 3.获取字符串的长度 [[email protected] ~]$ var=yang [[email protected] ~]$ length=${#var} [[email protected] ~]$ echo $length

《Linux Shell脚本攻略》 笔记 第二章:常用命令

<Linux Shell脚本攻略> 笔记 第二章:常用命令 1.cat cat -s //多个空白行压缩成一个 cat *.txt | tr -s '\n'   //移除空白行 cat -n //加行号 2.find 沿着文件层次结构向下遍历,匹配符合条件的文件,并执行相应的操作. eg: find ./ ! -name "*.txt" -print [[email protected] program_test]# find ./  -type f -name "

《Linux Shell脚本攻略》 笔记 第三章:文件操作

<Linux Shell脚本攻略> 笔记 第三章:文件操作 1.生产任意大小的文件 [[email protected] dd_test]# [[email protected] dd_test]# dd if=/dev/zero of=junk.data bs=1k count=10 10+0 records in 10+0 records out 10240 bytes (10 kB) copied, 0.00137023 s, 7.5 MB/s 2.文件系统相关测试 [ -f $file

《Linux Shell脚本攻略》 笔记 第六章:打包压缩

<Linux Shell脚本攻略> 笔记 第六章:打包压缩 //1.打包.解包 [[email protected] program_test]# tar -cf output.tar 11.txt 22.txt 33.txt [[email protected] program_test]# tar -xf output.tar -C ./tar-file/  //-C指定要提取到哪个路径? //列举出归档文件中的内容 [[email protected] program_test]# ta

LINUX SHELL脚本攻略笔记[速查]

Linux Shell脚本攻略笔记[速查] 资源 shell script run shell script echo printf 环境变量和变量 pgrep shell数学运算 命令状态 文件描述符和重定向 cat 数组和关联数组 alias date 调试脚本 函数和参数 管道 读取命令输出 read 字段分隔符和迭代器 循环 比较和测试 find xargs tr md5sum sha1sum 对目录进行校验 sort uniq tempfile split bash变量匹配切分 exp