linux三剑客-sed详解

sed是一种非常强大的文本处理工具,用于对文本进行搜索、替换、删除等操作。下面是sed的一些基本用法:

  1. 替换字符串:使用s命令可以替换字符串,格式为s/old/new/g,其中old表示原来的字符串,new表示要替换成的新字符串,g表示全局替换。

$ sed 's/apple/orange/g' file.txt  # 将文件中的所有"apple"替换成"orange"

如果需要直接修改文件,可以加上"-i"选项

  1. 删除行:使用d命令可以删除行,格式为d

$ sed '3d' file.txt  # 删除文件中的第3行
  1. 插入行:使用i命令可以插入行,格式为i\,其中\表示换行

$ sed '2i\This is a new line.' file.txt  # 在文件的第2行之前插入一行新的文本
  1. 追加行:使用a命令可以追加行,格式为a\,其中\表示换行。

$ sed '2a\This is a new line.' file.txt  # 在文件的第2行之后追加一行新的文本
  1. 执行多条命令:使用;可以在一行上执行多条命令。

$ sed '1d; s/apple/orange/g' file.txt  # 删除文件的第1行,并将文件中的所有"apple"替换成"orange"

  1. 只替换第N个匹配项:在s命令中可以使用数字来指定要替换的匹配项。

$ sed 's/apple/orange/2' file.txt  # 将文件中的第2个"apple"替换成"orange"
  1. 使用正则表达式:可以使用正则表达式来匹配文本。

$ sed '/apple/d' file.txt  # 删除文件中所有包含"apple"的行
  1. 指定处理的行范围:可以使用行号或正则表达式来指定要处理的行范围。

$ sed '1,3s/apple/orange/g' file.txt  # 将文件中第1到第3行的所有"apple"替换成"orange"
$ sed '/apple/,/orange/d' file.txt  # 删除文件中包含"apple"和"orange"之间的所有行
  1. 使用正则表达式进行替换

$ sed 's/[0-9]\{5\}/&-0000/g' file.txt

这个命令会将文件中所有5位数字后面添加"-0000",例如"12345"会被替换成"12345-0000"。其中,"[0-9]{5}"表示5位数字,"&"表示匹配到的内容。

  1. 使用分组和反向引用进行替换

$ sed 's/\(.*\)old\(.*\)/\1new\2/g' file.txt

这个命令会将文件中所有包含"old"的字符串替换成"new",并保留"old"前后的内容。其中,".∗.∗"表示匹配任意字符,"\1"表示反向引用匹配到的第一个分组,"\2"表示反向引用匹配到的第二个分组。

  1. 删除文件中的空行

$ sed '/^$/d' file.txt
  1. 打印指定行

$ sed -n '2p' file.txt

猜你喜欢

转载自blog.csdn.net/m0_61003348/article/details/129367006
今日推荐