awk、sed、grep、cut是Linux中文本处理、shell开发、数据截取的利器。
Sed
sed(Stream Editor)是一种流式文本编辑器,常用于对文本文件进行处理和转换。下面是一些常见的sed经典用法:
- 替换文本:
sed 's/old/new/g' file.txt
将文件中所有的 "old" 替换为 "new"。
2.删除行:
sed '/pattern/d' file.txt
删除文件中含有指定模式的行。
3.打印指定行:
sed -n '2,5p' file.txt
打印文件中第2行到第5行的内容。
4.插入行:
sed '3i\new line' file.txt
在文件的第3行之前插入一行新的内容。
5.追加行:
sed '3a\new line' file.txt
在文件的第3行之后追加一行新的内容。
6.使用正则表达式:
sed -E 's/([0-9]+)th/\1/g' file.txt
使用正则表达式进行替换,并引用匹配到的内容。
7.标签和分支:
sed '/pattern/{s/old/new/g; s/foo/bar/g}' file.txt
对含有指定模式的行进行多个替换操作。
8.保存修改到原文件:
sed -i 's/old/new/g' file.txt
在替换操作中使用-i
选项,将修改保存到原文件。
以上仅是sed的一些常见用法,实际使用中还可以结合正则表达式、条件判断、变量等进行更复杂的文本处理操作。你可以通过运行man sed
命令来查看更详细的文档和帮助。
Awk
awk是一种强大的文本处理工具,用于对文本文件进行分析和处理。它的主要功能包括字符串匹配、提取、替换、计算等。下面是一些常见的awk命令用法:
- 打印整行内容:
awk '{print}' file.txt
2.打印指定列:
awk '{print $2}' file.txt
3.使用自定义的分隔符:
awk -F',' '{print $1}' file.txt
4.按条件过滤:
awk '$3 > 10 {print $1}' file.txt
5.计算列的和:
awk '{sum+=$1} END {print sum}' file.txt
6.格式化输出:
awk '{printf "%-10s %5d\n", $1, $2}' file.txt
awk '{printf "%-10s %5d\n", $1, $2}' file.txt
7.使用正则表达式匹配:
awk '/pattern/ {print}' file.txt
8.使用if-else条件判断:
awk '{if($1 > 10) print "Large"; else print "Small"}' file.txt
9.使用循环:
awk '{for(i=1; i<=NF; i++) print $i}' file.txt
10.自定义函数:
awk 'function myfunc(x) {return x*2} {print myfunc($1)}' file.txt
这些是awk的一些常见用法,你可以根据自己的需求进行进一步的学习和实践。
Grep
grep命令是一种用于在文本文件中查找匹配模式的工具。它可以根据用户指定的模式进行搜索,并输出与模式匹配的行。
下面是一些常用的grep命令用法:
- 在文件中搜索指定字符串:
grep "pattern" file
例如:grep "hello" file.txt
- 在多个文件中搜索:
grep "pattern" file1 file2 file3
例如:grep "error" file1.txt file2.txt file3.txt
- 忽略大小写进行搜索:
grep -i "pattern" file
例如:grep -i "hello" file.txt
- 显示匹配的行号:
grep -n "pattern" file
例如:grep -n "error" file.txt
- 只显示匹配的行数:
grep -c "pattern" file
例如:grep -c "hello" file.txt
- 只显示不匹配的行:
grep -v "pattern" file
例如:grep -v "error" file.txt
- 只显示匹配的字符串:
grep -o "pattern" file
例如:grep -o "hello" file.txt
- 使用正则表达式进行匹配:
grep -E "pattern" file
例如:grep -E "[0-9]{3}" file.txt
- 递归搜索目录中的文件:
grep -r "pattern" directory
例如:grep -r "hello" /path/to/directory
- 从标准输入中读取数据进行搜索:
command | grep "pattern"
例如:ls -l | grep "file"
这些只是grep命令的一些常见用法,还有更多的选项和功能可供使用。可以通过man grep命令查看完整的grep命令文档。
Cut
cut命令是一个用于从文件或标准输入中提取文本的命令。它可以按列提取文本,并允许你指定分隔符来确定列的边界。下面是一些常用的cut命令用法和示例:
- 提取文件中的某一列:
cut -f <列号> <文件名>
示例:
cut -f 2 file.txt # 提取文件file.txt中的第2列
2.提取文件中的多列:
cut -f <列号1>,<列号2>,... <文件名>
示例:
cut -f 1,3 file.txt # 提取文件file.txt中的第1列和第3列
3.使用自定义的分隔符提取列:
cut -d <分隔符> -f <列号> <文件名>
示例:
cut -d ',' -f 2 file.csv # 使用逗号作为分隔符,提取文件file.csv中的第2列
4.提取文件中的某一列的字符范围:
cut -c <起始位置>-<结束位置> <文件名>
示例:
cut -c 1-5 file.txt # 提取文件file.txt中每行的第1到第5个字符
5.提取文件中的每行的最后几个字符:
cut -c -<字符数> <文件名>
示例:
cut -c -10 file.txt # 提取文件file.txt中每行的最后10个字符
这些是一些常见的cut命令用法和示例。你可以根据自己的需求来使用cut命令提取文件中的文本。同时,你可以通过运行man cut
命令来查看cut命令的完整文档和更多选项。