文章目录
- sed工具介绍
- 什么是sed工具,有什么用
- sed命令执行流程
- sed是按行读取文件的
- 每当读取一行内容,都会进行一次判断,判断是否是想要的行
- 默认不实质改变文件内容,仅临时输出给用户看(除非加-i选项)
- 例1
- 例2
- sed工具中的定界符
- 定界符的使用
- 使用定界符的示例
- -n选项
- -p选项
- 打印从带有关键字1行到关键字2行的内容
- 打印除关键字行外的其他行
- -d选项
- 删除第一行
- 删除最后一行
- 删除从关键字1行到关键字2行的内容
- -c和-a和-i选项
- -a选项
- 在文件最后一行后追加一行指定内容
- 在文件的指定第几行后追加一行指定内容
- 在文件每一行后追加一行指定内容
- -i选项
- 在文件指定第几行前插入一行指定内容
- 在文件每一行前插入一行指定内容
- -c选项
- -s和-g选项
- 将所有个位数为几的字符替换为666
- sed的模式空间
- 如何使用sed将文件中的回车替换成空格?
- 使用“N;”
- 一个“N;”和多个“N;”
- sed的后项引用
- 什么是后项引用?
- 如何使用sed截取指定网卡的IP
- 后项引用的具体语法?
sed工具介绍
什么是sed工具,有什么用
sed命令执行流程
sed是按行读取文件的
每当读取一行内容,都会进行一次判断,判断是否是想要的行
默认不实质改变文件内容,仅临时输出给用户看(除非加-i选项)
例1
以下面的命令执行流程为例:
sed '4p' ./1.txt
-
如果加了-n选项,就会读取下一行
-
如果不加-n,会将所有的文件内容输出来,继续读取下一行
-
如果是想要的行,那么将第四行的内容执行相应的动作(-p -d -s -a -i -c等)
-
动作处理完毕之后,输出对应的指定内容(只打印第四行内容)
-
即使读取完毕,内容也输出完毕,sed命令也会继续往后读,直到文件的最后一行为止
(如果加了-n选项,那么不仅打印第四行内容,还会打印文件所有内容)
这里的p的意思是print,不实质改变文件内容,仅临时输出给用户看
例2
sed -n '2p' ./1.txt
sed '2p' ./1.txt
sed工具中的定界符
sed
(stream editor)是一个流编辑器,用于对文本数据进行过滤和转换。在 sed
命令中,定界符是用来界定模式(pattern)和替换字符串(replacement)的字符。默认情况下,sed
使用正斜杠 /
作为定界符,但你可以指定任何字符作为定界符,只要这个字符在模式或替换字符串中没有出现。
定界符的使用
- 默认定界符:默认情况下,
sed
使用/
作为定界符。
sed 's/old/new/g' file.txt
这个命令将 file.txt
文件中的所有 “old” 替换为 “new”。
- 自定义定界符:如果你的模式或替换字符串中包含正斜杠
/
,你可以使用其他字符作为定界符。例如,使用井号#
:
sed 's#/old/#/new/#g' file.txt
这个命令将 file.txt
文件中的所有 “/old/” 替换为 “/new/”。
- 使用反斜杠:如果你选择的定界符是反斜杠
\
,你需要使用两个反斜杠\\
来表示一个反斜杠字符。
sed 's\\old\\new\\g' file.txt
- 使用竖线:竖线
|
也可以作为定界符。
sed 's|old|new|g' file.txt
- 使用空格:空格也可以作为定界符。
sed 's old new g' file.txt
- 使用其他特殊字符:任何不是模式或替换字符串一部分的字符都可以作为定界符。
sed 's@old@new@g' file.txt
使用定界符的示例
假设你有以下内容的文件 example.txt
:
hello world
this is a test
hello again
- 将 “hello” 替换为 “hi”:
sed 's/hello/hi/g' example.txt
输出:
hi worldthis is a testhi again
- 使用自定义定界符:
如果你想要替换的字符串中包含正斜杠/
,你可以使用其他定界符,例如#
:
sed 's#/hello/#/hi/#g' example.txt
输出:
hi worldthis is a testhi again
- 使用多行模式:
你可以使用定界符来定义多行模式,例如删除包含 “hello” 到 “again” 的行:
sed '/hello/,/again/d' example.txt
输出:
this is a test
通过自定义定界符,你可以更灵活地处理包含特殊字符的文本数据,使得 sed
命令更加强大和灵活。
-n选项
取消默认输出(默认是将文件内容都输出的)
-p选项
打印从带有关键字1行到关键字2行的内容
打印除关键字行外的其他行
-d选项
删除第一行
删除最后一行
删除从关键字1行到关键字2行的内容
-c和-a和-i选项
-c——replace
-a——append
-i——insert
-a选项
在文件最后一行后追加一行指定内容
在文件的指定第几行后追加一行指定内容
在文件每一行后追加一行指定内容
-i选项
在文件指定第几行前插入一行指定内容
在文件每一行前插入一行指定内容
-c选项
-s和-g选项
用于替换文件内容
s:substitute
g:global
将所有个位数为几的字符替换为666
sed的模式空间
如何使用sed将文件中的回车替换成空格?
有个问题:
解决问题:
使用“N;”
一个“N;”和多个“N;”
sed的后项引用
什么是后项引用?
如何使用sed截取指定网卡的IP
问题:
解决: