“Linux三剑客是指的grep、sed、awk
grep
一种强大的文本搜索工具,用于在文件内容中查找指定的字符串,并将匹配到的行输出到标准输出。以下是grep命令的基本使用方法:
在文件中搜索指定字符串
$ grep "string" filename.txt
这个命令会搜索filename.txt文件中所有出现"string"的行,不区分大小写。
在多个文件中搜索字符串
$ grep "string" file1.txt file2.txt
这个命令会搜索file1.txt和file2.txt文件中所有出现"string"的行。
使用正则表达式搜索
$ grep -E "^string" filename.txt
这个命令会搜索filename.txt文件中所有以"string"开头的行。-E选项表示启用正则表达式模式。
递归搜索目录
$ grep -r "string" /path/to/directory/
这个命令会递归地搜索/path/to/directory/目录及其子目录中的所有文件,查找包含"string"的行。
统计匹配行数
$ grep -c "string" filename.txt
这个命令会统计filename.txt文件中包含"string"的行数
sed
sed是一种流编辑器,常用于对文件进行替换、删除、添加等操作。下面是sed的一些基本用法:
替换操作:
sed 's/old_string/new_string/g' file_path。将file_path文件中所有出现的old_string字符串替换为new_string字符串。
删除操作:
sed '3d' file_path。删除file_path文件中第3行的内容。
添加操作:
sed '4a\add_text' file_path。在file_path文件中第4行之后添加add_text字符串。
标签和分支:使用标签和分支可以实现复杂的替换和删除操作
例如:sed '/pattern/{s/old_string/new_string/g;d}' file_path,表示在匹配pattern的行中将old_string替换为new_string,并删除该行
从文件中读取命令:使用“-f”选项可以从指定文件中读取sed命令
例如:sed -f sed_cmds.txt file_path。
多个命令组合:使用“-e”选项可以将多个sed命令组合起来执行
例如:sed -e 's/old_string/new_string/g' -e '3d' file_path。
awk
awk是一种文本处理程序,它可以用于从标准输入或文件中提取、操作和打印数据。以下是awk的使用示例:
打印输入流中每一行的第一个字段
$ awk '{ print $1 }' filename.txt
打印输入流中包含特定字符串的行
$ awk '/pattern/ { print }' filename.txt
计算文件中列的总和
$ awk '{ sum += $1 } END { print sum }' filename.txt
使用分隔符来指定列
$ awk -F ',' '{ print $1,$2 }' filename.csv
使用awk编写更复杂的程序,并执行
$ awk -f script.awk filename.txt