-n:关闭默认输出,只打印经过编辑的行。通常与p命令结合使用,用于仅打印匹配到的行。
例如:sed -n '/pattern/p' file.txt
只打印包含 pattern 的行。
-i:直接修改文件内容,而不是将结果输出到标准输出。使用此选项时,sed将直接修改原始文件。
例如:sed -i 's/foo/bar/' file.txt
将文件中每行的第一个出现的 foo 替换为 bar 并直接修改文件。
-e <脚本>:指定要执行的编辑脚本。可以使用多个 -e
选项来指定多个编辑脚本。脚本将按照指定的顺序依次执行。
例如:sed -e 's/foo/bar/' -e 's/baz/qux/' file.txt
先执行第一个替换,然后执行第二个替换。
-r:启用扩展正则表达式,使得正则表达式中的特殊字符不需要进行转义。
例如:sed -r 's/(foo|bar)/baz/g' file.txt
将替换所有的 foo 或 bar 为 baz。
-f <脚本文件>:从指定的脚本文件中读取编辑命令。脚本文件可以包含多个编辑命令,每行一个。
例如:sed -f script.sed file.txt
将根据 script.sed 文件中的编辑命令对 file.txt 进行处理。
-V:显示sed的版本信息。
以下是一些常用的sed命令:
替换内容:s/old/new/ - 将每行中的第一个匹配到的 old 替换为 new。
例如:sed 's/foo/bar/' file.txt
将文件中每行的第一个出现的foo替换为bar。
全局替换:s/old/new/g - 将每行中的所有匹配到的 old 替换为 new。
例如:sed 's/foo/bar/g' file.txt
将文件中每行的所有foo替换为bar。
删除行:d - 删除匹配到的行。
例如:sed '/pattern/d' file.txt
将删除包含 pattern 的行。
插入行:i\ - 在匹配到的行之前插入一行。
例如:sed '/pattern/i\New Line' file.txt
将在包含 pattern 的行之前插入一行 New Line。
追加行:a\ - 在匹配到的行之后追加一行。
例如:sed '/pattern/a\New Line' file.txt
将在包含 pattern 的行之后追加一行 New Line。
行号限定:<行号> - 限定对特定行进行操作。
例如:sed '3s/foo/bar/' file.txt
将仅在第三行执行替换操作。
打印行:p - 打印匹配到的行。
例如:sed -n '/pattern/p' file.txt
将打印包含 pattern 的行。
正则表达式:使用正则表达式进行模式匹配和替换。
例如:sed 's/[0-9]/X/g' file.txt
将文件中的所有数字替换为 X。
多个命令组合:使用分号将多个命令组合在一起,按顺序执行。
例如:sed -e 's/foo/bar/; s/baz/qux/' file.txt
将先执行第一个替换,然后执行第二个替换。