linux文本处理三剑客grep,sed,awk的常用用法
1. grep命令
grep
命令在 Linux 系统中是文本搜索的利器,它基于正则表达式进行匹配,能够高效地筛选出包含指定模式的文本行。以下是 grep
命令的一些常用用法和示例:
基本用法
grep '模式' 文件名
模式
:可以是简单的文本字符串,也可以是复杂的正则表达式。文件名
:指定要搜索的文件。如果省略文件名,grep
会从标准输入读取数据。
#1. 查找包含指定字符串的行
grep "hello" example.txt
#2. 递归搜索目录中的所有文件
grep -r "pattern" directory
#递归搜索当前目录及其子目录中包含字符串 "hello" 的所有文件:
grep -r "hello" .
#3. 显示文件 example.txt 中包含字符串 "hello" 的行及其行号:
grep -n "hello" example.txt
#4. 忽略大小写查找文件 example.txt 中包含字符串 "hello" 的所有行:
grep -i "hello" example.txt
#5. 显示文件 example.txt 中不包含字符串 "hello" 的所有行:
grep -v "hello" example.txt
#6. 显示包含字符串 "hello" 的文件名:
grep -l "hello" *.txt
#7. 显示不包含字符串 "hello" 的文件名:
grep -L "hello" *.txt
#8.使用正则表达式:查找文件 example.txt 中以 "hello" 开头的行:
grep "^hello" example.txt
#9. 多模式匹配:查找文件 example.txt 中包含 "hello" 或 "world" 的行:
grep -e "hello" -e "world" example.txt
#10. 通过管道符搜索 command | grep -n "parrent"
ls -l |grep "test"
2. sed命令
sed
(Stream Editor)是一个强大的文本处理工具,常用于在 Linux 和 Unix 系统中进行流编辑。它可以用来替换文本、删除行、插入文本等。以下是 sed
命令的一些常用用法和示例:
基本语法
sed [选项] '脚本' 文件名
常用选项
-e script
或--expression=script
:添加script
到要执行的命令中。-f script-file
或--file=script-file
:从script-file
中读取sed
脚本。-i[SUFFIX]
或--in-place[=SUFFIX]
:直接修改文件内容,而不是输出到标准输出。可选地备份文件,使用SUFFIX
作为备份文件的扩展名。-n
或--quiet
或--silent
:仅显示那些被p
命令处理的行。
常用脚本命令
s/pattern/replacement/flags
:替换操作。pattern
:被替换的模式。replacement
:替换后的文本。flags
:标志,如g
表示全局替换,p
表示打印替换的行。
d
:删除行。p
:打印行。a\text
:在匹配行后追加text
。i\text
:在匹配行前插入text
。c\text
:用text
替换匹配的行。
#1. 将 file.txt 中每行的第一个 foo 替换为 bar。
sed 's/foo/bar/' file.txt
#2. 将 file.txt 中所有的 foo 替换为 bar。
sed 's/foo/bar/g' file.txt
#3. 将文件 example.txt 中第 5 行的 "apple" 替换为 "orange":
sed 'line-number s/old-text/new-text/' filename
sed '5 s/apple/orange/' example.txt
#4. 将文件 example.txt 中第 3 到第 7 行的 "apple" 替换为 "orange":
sed 'start-line,end-line s/old-text/new-text/' filename
sed '3,7 s/apple/orange/' example.txt
#5. 删除指定行:删除文件 example.txt 中的第 5 行:
sed 'line-number d' filename
sed '5d' example.txt
#6. 删除范围内的行:删除文件 example.txt 中第 3 到第 7 行:
sed 'start-line,end-line d' filename
sed '3,7d' example.txt
#7. 删除匹配的行:删除文件 example.txt 中包含 "apple" 的所有行:
sed '/pattern/d' filename
sed '/apple/d' example.txt
#8. 在指定行前插入文本:在文件 example.txt 的第 5 行前插入 "This is a new line.":
sed 'line-number i\new-text' filename
sed '5 i\This is a new line.' example.txt
#9. 在指定行后追加文本:在文件 example.txt 的第 5 行后追加 "This is a new line.":
sed 'line-number a\new-text' filename
sed '5 a\This is a new line.' example.txt
#10. 直接修改原文件:直接在文件 example.txt 中将所有的 "apple" 替换为 "orange":
sed -i 's/old-text/new-text/' filename
sed -i 's/apple/orange/g' example.txt
3. awk命令
awk
是一个强大的文本处理工具,在 Linux 和 Unix 系统中广泛使用。它特别适用于模式扫描和处理语言,可以用于从文件中提取和转换数据。以下是一些基本的 awk
用法示例和解释:
基本语法
awk 'pattern { action }' input-file
pattern
:用于匹配输入行。可以是正则表达式、条件表达式或空(表示匹配所有行)。action
:在匹配pattern
的行上执行的命令块。通常被花括号{}
包围。input-file
:要处理的输入文件。
#1. 打印文件中的所有行:
awk '{print}' example.txt
#2. 打印文件中的特定行:打印文件 example.txt 中的第 5 行:
awk 'NR == line_number {print}' filename
awk 'NR == 5 {print}' example.txt
#3. 打印文件中的特定行范围:打印文件 example.txt 中第 3 到第 7 行:
awk 'NR >= start_line && NR <= end_line {print}' filename
awk 'NR >= 3 && NR <= 7 {print}' example.txt
#4. 打印文件中的特定列:打印文件 example.txt 中的第二列:
awk '{print $column_number}' filename
awk '{print $2}' example.txt
#5. 根据条件过滤行:打印文件 example.txt 中包含 "apple" 的所有行:
awk '/pattern/ {print}' filename
awk '/apple/ {print}' example.txt
#6. 使用多个条件:打印文件 example.txt 中第一列等于 "apple" 且第二列大于 10 的行:
awk 'condition1 && condition2 {print}' filename
awk '$1 == "apple" && $2 > 10 {print}' example.txt
#7. 指定字段分隔符:
awk -F 'delimiter' '{print $column_number}' filename
awk -F ',' '{print $3}' example.csv
#8. 计算和统计 计算文件 example.txt 中第二列的总和:
awk '{sum += $column_number} END {print sum}' filename
awk '{sum += $2} END {print sum}' example.txt
#9. 计算平均值:计算文件 example.txt 中第二列的平均值:
awk '{sum += $column_number; count++} END {print sum / count}' filename
awk '{sum += $2; count++} END {print sum / count}' example.txt
#10. 统计行数 统计文件 example.txt 的行数:
awk 'END {print NR}' filename
awk 'END {print NR}' example.txt
#11. 格式化输出:格式化输出文件 example.txt 中的前两列:
awk '{printf format_string}' filename
awk '{printf "%-10s %-10s\n", $1, $2}' example.txt
原文地址:https://blog.csdn.net/s00229295/article/details/143792704
免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!