简介
- sed命令
linux sed命令 详解
sed
(流编辑器)是一个在命令行中使用的文本处理工具,用于对文本流进行过滤和转换。它通常用于从输入文本中选择、删除、替换文本,以及对文本进行其他一些操作。以下是sed
命令的一些常见用法和选项的详解:
基本语法:
1 | sed [选项] '脚本' 文件 |
常用选项:
-n
:抑制默认的输出,只输出经过编辑的行。-e
:指定要执行的编辑命令。-f
:从文件中读取编辑脚本。-i
:直接修改文件内容,而不是输出到标准输出。
基本编辑命令:
替换文本:
1
sed 's/old_text/new_text/' file.txt
这将在
file.txt
中查找并替换第一次出现的old_text
。全局替换:
1
sed 's/old_text/new_text/g' file.txt
使用
g
标志进行全局替换,替换每一处匹配。删除行:
1
sed '/pattern/d' file.txt
删除包含指定模式的行。
打印行:
1
sed -n '2p' file.txt
打印文件中的第二行。
打印指定范围的行:
1
sed -n '2,5p' file.txt
打印文件中的第2到第5行。
在指定行之前或之后插入文本:
1
sed '2i\inserted_text' file.txt
在第2行之前插入文本。
1
sed '2a\appended_text' file.txt
在第2行之后追加文本。
使用正则表达式:
1
sed '/^pattern/s/old_text/new_text/' file.txt
仅在以
pattern
开头的行中替换old_text
。多个编辑命令:
1
sed -e 's/old/new/' -e 's/another/replace/' file.txt
执行多个编辑命令。
从文件读取编辑脚本:
1
sed -f script.sed file.txt
script.sed
包含一系列sed
编辑命令。将结果写入文件:
1
sed 's/old/new/' file.txt > new_file.txt
将结果输出到新文件。
这只是sed
的一些基本用法,它还有更多高级的功能和选项。查阅sed
的手册页(man sed
)以获取更详细的信息。
linux sed命令 常用技巧
sed
是一个非常强大的文本处理工具,下面是一些在使用sed
时常用的一些技巧:
使用正则表达式:
sed
支持正则表达式,可以在模式匹配时灵活应用。例如,使用.*
匹配任意字符。1
sed 's/^.*pattern.*$/replacement/' file.txt
引用变量:
可以在sed
命令中使用变量,但是需要小心引号的使用,以确保变量被正确解释。1
2my_var="pattern"
sed "s/$my_var/new_text/" file.txt在匹配行之前或之后添加文本:
使用i
在匹配行之前插入文本,使用a
在匹配行之后追加文本。1
2sed '/pattern/i\inserted_text' file.txt
sed '/pattern/a\appended_text' file.txt使用变量删除行:
使用变量作为删除条件,可以动态指定要删除的内容。1
2delete_var="pattern"
sed "/$delete_var/d" file.txt逆序打印文件:
使用-n
抑制默认输出,然后使用p
打印行。1
sed -n '1!G;h;$p' file.txt
删除空白行:
删除文件中的空白行,包括只包含空格或制表符的行。1
sed '/^\s*$/d' file.txt
使用变量替换定界符:
如果模式或替换文本中包含斜杠(/
),可以使用其他定界符替代。1
sed "s|/old/|new|" file.txt
只处理文件的部分行:
使用行号范围限定sed
的操作范围。1
sed '10,20s/old/new/' file.txt
反向引用匹配组:
在替换文本中使用\1
、\2
等引用匹配组。1
sed 's/\(pattern1\)\(pattern2\)/\2\1/' file.txt
使用
-i
选项直接修改文件:
使用-i
选项可以直接在原文件上修改,但请小心使用,确保备份数据。1
sed -i 's/old/new/' file.txt
这些技巧只是sed
的冰山一角。要深入了解,建议查看sed
的文档和手册页(man sed
)。
linux sed命令 高级技巧
以下是一些在使用sed
时的高级技巧,这些技巧可以更灵活地处理文本:
使用地址范围:
定义sed
的操作范围,可以是行号范围,也可以是正则表达式匹配的范围。1
2sed '10,20s/old/new/' file.txt
sed '/start/,/end/s/old/new/' file.txt使用命名标签:
使用b
命令和标签来进行跳转,可以提高脚本的可读性和复用性。1
sed ':label /pattern/ { s/old/new/; b label; }' file.txt
处理多行模式空间:
N
命令可以将下一行追加到模式空间中,使用\n
表示换行。1
sed 'N;s/\n/ /' file.txt
保留匹配行之外的内容:
使用!
来反转匹配,保留非匹配行。1
sed '/pattern/!s/unwanted_text/new_text/' file.txt
只处理匹配的部分:
使用匹配组来保留或替换匹配的部分。1
sed 's/\(start_pattern\)keep_this_part\(end_pattern\)/\1replace_this_part\2/' file.txt
使用
h
和H
保存和追加到保持缓冲区:
将匹配的行保存到保持缓冲区,使用h
,将下一行追加到保持缓冲区,使用H
。1
sed -n '/pattern/{h;};/next_pattern/{H;x;p;}' file.txt
自定义分隔符:
可以使用不同的分隔符,以避免在正则表达式中转义斜杠。1
sed 's|/old/|new|' file.txt
执行
sed
脚本:
将sed
脚本保存到文件中,并通过-f
选项执行。1
sed -f script.sed file.txt
在指定行数插入或删除行:
使用sed
在指定行数之前或之后插入行,或者删除指定行。1
2
3sed '2i\inserted_line' file.txt
sed '2a\appended_line' file.txt
sed '2d' file.txt逐行处理:
使用sed
逐行处理文件,对每一行执行命令。1
sed -e 's/old/new/' -e 'p' file.txt
这些高级技巧可以使sed
更加强大和灵活,但也需要谨慎使用,以确保正确处理文本数据。深入了解sed
的文档和手册页对于理解和应用这些技巧非常有帮助。
sed
- sed, 利用脚本来处理文本文件,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
- sed [-hnV] [-e