grep 和 sed 实例

grep 命令用于在文本文件中查找匹配正则表达式的行,并打印出。
sed 命令用于对文本文件进行修改,比如替换、删除、插入等操作。

grep 命令的基本语法是:

grep [选项] pattern [文件]

pattern 是要查找的正则表达式,文件是要查找的文本文件。如果没有指定文件,grep 会从标准输入(stdin)读取数据。

sed 命令的基本语法是:

sed [选项] commands [文件]

commands 是要执行的 sed 操作,文件是要修改的文本文件。如果没有指定文件,sed 会从标准输入(stdin)读取数据。

下面是一些 grep 和 sed 的实例教程:

假设有一个名为 data.txt 的文本文件,内容如下:

name: Alice
age: 20
gender: female
name: Bob
age: 25
gender: male
name: Charlie
age: 30
gender: male
  • 查找包含 name 的行并打印出来:

grep name data.txt

输出:

name: Alice
name: Bob
name: Charlie
  • 查找包含 age 的行并打印出来,并显示行号:

grep -n age data.txt

输出:

2:age: 20
5:age: 25
8:age: 30
  • 查找包含 female 或 male 的行并打印出来,并忽略大小写:

grep -i "female\|male" data.txt

输出:

gender: female
gender: male
gender: male
  • 查找不包含 gender 的行并打印出来,并统计匹配行数:

grep -vc gender data.txt

输出:

6

  • 将所有 name 替换为 username 并保存到新文件 new_data.txt 中:

sed 's/name/username/g' data.txt > new_data.txt

新文件 new_data.txt 的内容为:

username: Alice
age: 20
gender: female
username: Bob
age: 25
gender: male
username: Charlie
age: 30 
gender: male

  • 将所有 age 后面的数字加上10并保存到原文件中(需要使用 -i 选项):

sed -i 's/\(age:\) \([0-9]\+\)/\1 \2+10/' data.txt

原文件 data.txt 的内容变为:

name: Alice 
age: 30 
gender: female
name: Bob 
age:35 
gender: male 
name:Charlie 
age: 40 
gender: male
  • 删除所有包含 gender 的行并保存到原文件中(需要使用 -i 选项):

sed -i '/gender/d' data.txt

原文件 data.txt 的内容变为:

name: Alice 
age: 30 
name: Bob 
age: 35 
name: Charlie 
age: 40

(1) Manipulating text with sed and grep | Enable Sysadmin. https://www.redhat.com/sysadmin/manipulating-text-sed-grep
(2) Powerful Text Processing with grep and sed: A Practical Guide. https://www.fosslinux.com/103848/searching-and-manipulating-text-with-grep-and-sed.htm
(3) Text Processing in Linux: Understanding Grep, sed, and AWK. https://www.linode.com/docs/guides/differences-between-grep-sed-awk/
(4) Is there a basic tutorial for grep, awk and sed?. https://unix.stackexchange.com/questions/2434/is-there-a-basic-tutorial-for-grep-awk-and-sed

猜你喜欢

转载自blog.csdn.net/dgwxligg/article/details/129471306