GO在线工具集
首页
搜索
反馈

linux三剑客
28  |   |   |  0

linux 3剑客

grep

  • grep 是一个强大的命令行工具,用于在文件或文本中搜索指定的字符串或正则表达式。
  • 基本语法
#搜索模式:可以是普通字符串,也可以是正则表达式。
#文件:指定要搜索的文件,可以是一个或多个文件,也可以通过管道输入。
grep [选项] "搜索模式" 文件
常用选项
选项描述
-i忽略大小写匹配。
-v反向匹配,显示未匹配的行。
-c仅输出匹配的行数。
-n显示匹配行的行号。
-l仅列出包含匹配内容的文件名。
-o仅显示匹配的部分,而非整行。
-r递归搜索
-w完全匹配
-e指定正则表达式
示例
  • 显示 file.txt 中包含 "hello" 的所有行:
grep "hello" file.txt
  • 显示目录 /path/to/directory 中所有包含 "hello" 的文件及其匹配内容:
grep -r "hello" /path/to/directory
  • 匹配 "error" 或 "ERROR" 等大小写不同的文本:
grep -i "error" log.txt
  • 显示匹配 "pattern" 的行及其对应的行号:
grep -n "pattern" file.txt
  • 列出当前目录下所有包含 "keyword" 的文件名:
grep -l "keyword" *.txt
  • 显示匹配 "important" 的行及其前后 2 行内容:
grep -C 2 "important" document.txt

awk

  • awk 是一个功能强大的文本处理工具,用于在文件或文本流中对数据进行格式化、过滤和分析操作。它支持基于模式的匹配和操作,适用于日志分析、数据提取和简单的脚本编写。
  • 基本语法
#模式:用于匹配输入数据的条件(可选)。
#动作:对匹配到的数据执行的操作(可选)。
#如果省略 模式,默认匹配所有行。
#如果省略 动作,默认打印匹配的行。
awk '模式 { 动作 }' 文件
常用选项
选项描述
-F指定输入字段分隔符(默认是空格或制表符)。
-vvar=value 定义变量并传递给 awk。
BEGIN在处理数据前执行的动作(如初始化)。
END在所有数据处理完成后执行的动作。
条件表达式如 $1 > 100,匹配第一个字段大于 100 的行。
常用内置变量
变量描述
$0当前行的内容。
$1 ...当前行的第 1 个、第 2 个字段,以此类推。
NR当前行号(Number of Record)。
NF当前行的字段数(Number of Fields)。
FS输入字段分隔符(Field Separator)。
OFS输出字段分隔符(Output Field Separator)。
示例
  • 逐行打印文件内容:
awk '{ print $0 }' file.txt
  • 打印文件每行的第 1 和第 3 个字段:
awk '{ print $1, $3 }' file.txt
  • 以逗号为分隔符,打印每行的第 2 个字段:
awk -F "," '{ print $2 }' data.csv
  • 打印第 1 个字段值大于 50 的所有行:
awk '$1 > 50 { print $0 }' file.txt
  • 打印包含 "error" 的所有行:
awk '/error/ { print $0 }' log.txt
  • 打印每行内容及其字段数:
awk '{ print $0, "字段数:", NF }' file.txt
  • 在文件处理完成后,输出总行数:
awk 'END { print "总行数:", NR }' file.txt
  • 在文件处理完成后,输出总行数:
awk 'END { print "总行数:", NR }' file.txt
  • 在文件处理前打印 "处理开始",逐行打印第 1 个字段,最后打印 "处理结束":
awk 'BEGIN { print "处理开始" } { print $1 } END { print "处理结束" }' file.txt
  • 打印第 1 个字段值大于 100 的行:
awk -v threshold=100 '$1 > threshold { print $0 }' file.txt
  • 计算文件中第 1 个字段的总和:
awk '{ sum += $1 } END { print "总和:", sum }' file.txt

sed

  • sed(Stream Editor)是一个强大的流编辑器,用于对文本进行批量处理。它支持查找替换、删除、插入等多种文本操作,适用于处理文件或标准输入中的文本流。
  • 基本语法
#脚本命令:指定对文本进行操作的规则,如替换或删除。
#文件:要处理的文件,也可以通过管道传入数据。
sed [选项] '脚本命令' 文件
基本选项
选项描述
-n禁止自动输出,只有指定的行会被显示。
-e允许在命令行中添加多个脚本命令。
-i直接修改原文件(就地编辑)。
-f从文件加载脚本命令。
常用命令
命令描述
s/old/new/替换操作,将 old 替换为 new。
d删除匹配的行。
p打印匹配的行(与 -n 一起使用)。
a\text在当前行后追加文本 text。
i\text在当前行前插入文本 text。
c\text替换匹配行的内容为 text。
q提前退出,停止处理后续行。
示例
  • 将 file.txt 中的第一处 old 替换为 new:
sed 's/old/new/g' file.txt
  • 删除 file.txt 中的第 2 行:
sed '2d' file.txt
  • 在第 3 行后插入文本 This is a new line:
sed '3a\This is a new line' file.txt`
  • 在第 3 行前插入文本 This is an inserted line:
sed '3i\This is an inserted line' file.txt
  • 将第 2 行的内容替换为 This is the new content:
sed '2c\This is the new content' file.txt
  • 仅打印包含 pattern 的行:
sed -n '/pattern/p' file.txt
  • 删除第 1 行,同时将 foo 替换为 bar:
sed '1d; s/foo/bar/' file.txt
  • 直接修改 file.txt,将所有 old 替换为 new:
sed -i 's/old/new/g' file.txt
  • 删除第 2 行到第 4 行:
sed '2,4d' file.txt
  • 将 script.sed 中的命令应用于 file.txt:
sed -f script.sed file.txt