awk、sed、grep、cut是Linux中文本处理、shell开发、数据截取的利器。

Sed

sed(Stream Editor)是一种流式文本编辑器,常用于对文本文件进行处理和转换。下面是一些常见的sed经典用法:

  1. 替换文本:
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命令用法:

  1. 打印整行内容:
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命令用法:

  1. 在文件中搜索指定字符串:
grep "pattern" file
例如:grep "hello" file.txt
  1. 在多个文件中搜索:
grep "pattern" file1 file2 file3
例如:grep "error" file1.txt file2.txt file3.txt
  1. 忽略大小写进行搜索:
grep -i "pattern" file
例如:grep -i "hello" file.txt
  1. 显示匹配的行号:
grep -n "pattern" file
例如:grep -n "error" file.txt
  1. 只显示匹配的行数:
grep -c "pattern" file
例如:grep -c "hello" file.txt
  1. 只显示不匹配的行:
grep -v "pattern" file
例如:grep -v "error" file.txt
  1. 只显示匹配的字符串:
grep -o "pattern" file
例如:grep -o "hello" file.txt
  1. 使用正则表达式进行匹配:
grep -E "pattern" file
例如:grep -E "[0-9]{3}" file.txt
  1. 递归搜索目录中的文件:
grep -r "pattern" directory
例如:grep -r "hello" /path/to/directory
  1. 从标准输入中读取数据进行搜索:
command | grep "pattern"
例如:ls -l | grep "file"

这些只是grep命令的一些常见用法,还有更多的选项和功能可供使用。可以通过man grep命令查看完整的grep命令文档。

Cut

cut命令是一个用于从文件或标准输入中提取文本的命令。它可以按列提取文本,并允许你指定分隔符来确定列的边界。下面是一些常用的cut命令用法和示例:

  1. 提取文件中的某一列:
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命令的完整文档和更多选项。