Linux 三剑客

grep

grep是一个强大的文本搜索工具,它使用正则表达式搜索文本,并将匹配的行打印到标准输出。

基本语法:
grep [选项] 模式 [文件...]

常用选项:
-i:忽略大小写。
-v:反转匹配,显示不匹配模式的行。
-r 或 -R:递归搜索。
-l:仅显示匹配的文件名。
-n:显示匹配行的行号。
-c:计数,显示匹配的行数。
-e:指定多个搜索模式。
-f:从文件读取模式。
常用模式匹配:

a:匹配字母a。
^:匹配行的开头。
$:匹配行的结尾。
.:匹配任意单个字符。
*:匹配前面的字符0次或多次。
[]:字符集合,例如[abc]匹配a、b或c。
[^]:字符排除集合,例如[^abc]匹配除a、b、c之外的任意字符

1.查找指定字符串的前后n行

grep -A 100 -B 100 "要查找的字符串" 被查找的文件
 
-A after 后面
-B before 前面

2.查找指定字符串出现的行

grep -n "要查找的字符串" 被查找的文件

3.查找指定字符出现为止的上下n行

grep -C n "要查找的字符串" 被查找的文件
#显示文件中匹配字符串所在行的上下n行,相比较1,优先使用本用法

4、多条件查找

# OR 条件  \|表示 OR 条件
grep 'apple\|banana' file.txt

# AND 条件 -e选项表示指定一个搜索模式,可以多次使用来指定多个模式
grep -e 'apple' -e 'pie' file.txt

# NOT 条件 查找不包含“apple”的行
grep -v 'apple' file.txt

5、正则表达式

# .*表示匹配任意字符,正则表达式中的竖线符号|不需要转义
# 查找同时包含“apple”和“pie”(中间可以有任意字符)的行
grep 'apple.*pie|pie.*apple' file.txt

sed

sed是一个流编辑器,用于对输入流(或文件)进行基本的文本转换。它经常被用于脚本和自动化任务中,以执行基本的文本替换、删除、插入和其他编辑操作

基本语法
sed [options] 'command' file
# 其中,options是可选的,用于指定sed的行为;command是你要执行的编辑命令;file是要处理的文件或输入流。

1、查找文件中的5到10行

sed -n "5,10p" 被查找的文件

2、apple替换成orange,末尾是指定替换操作的行为,没有 g 标志,只替换每一行中的第一个匹配到的 “apple”,而不会进行全局替换

sed 's/apple/orange/g' file.txt

3、删除包含"error"的行

sed '/error/d' file.txt

4、插入和追加行

# 在所有包含"header"的行之前插入新行 i\
sed '/header/i\This is a new line' file.txt

# 在所有包含"header"的行之后插入新行 a\
sed '/apple/a\This is a new line' file.txt

5、在每行的末尾添加一个新行

sed 's/$/\n/' file.txt > file_new.txt

6、其他

选项:sed有许多选项可以调整其行为,例如:
-n:只打印模式空间中由显式打印命令指定的行
-i:直接修改文件,而不是输出到标准输出

-e script或--expression=script:指定额外的编辑脚本
# 示例:在文件中将所有"apple"替换为"orange",并直接修改文件,可以使用以下命令:
sed -i 's/apple/orange/g' file.txt

awk

你可能感兴趣的:(linux,运维,服务器)