0%

linux_2_36_sed

简介

  • sed命令

linux sed命令 详解

sed(流编辑器)是一个在命令行中使用的文本处理工具,用于对文本流进行过滤和转换。它通常用于从输入文本中选择、删除、替换文本,以及对文本进行其他一些操作。以下是sed命令的一些常见用法和选项的详解:

基本语法:

1
sed [选项] '脚本' 文件

常用选项:

  • -n:抑制默认的输出,只输出经过编辑的行。
  • -e:指定要执行的编辑命令。
  • -f:从文件中读取编辑脚本。
  • -i:直接修改文件内容,而不是输出到标准输出。

基本编辑命令:

  1. 替换文本:

    1
    sed 's/old_text/new_text/' file.txt

    这将在file.txt中查找并替换第一次出现的old_text

  2. 全局替换:

    1
    sed 's/old_text/new_text/g' file.txt

    使用g标志进行全局替换,替换每一处匹配。

  3. 删除行:

    1
    sed '/pattern/d' file.txt

    删除包含指定模式的行。

  4. 打印行:

    1
    sed -n '2p' file.txt

    打印文件中的第二行。

  5. 打印指定范围的行:

    1
    sed -n '2,5p' file.txt

    打印文件中的第2到第5行。

  6. 在指定行之前或之后插入文本:

    1
    sed '2i\inserted_text' file.txt

    在第2行之前插入文本。

    1
    sed '2a\appended_text' file.txt

    在第2行之后追加文本。

  7. 使用正则表达式:

    1
    sed '/^pattern/s/old_text/new_text/' file.txt

    仅在以pattern开头的行中替换old_text

  8. 多个编辑命令:

    1
    sed -e 's/old/new/' -e 's/another/replace/' file.txt

    执行多个编辑命令。

  9. 从文件读取编辑脚本:

    1
    sed -f script.sed file.txt

    script.sed包含一系列sed编辑命令。

  10. 将结果写入文件:

    1
    sed 's/old/new/' file.txt > new_file.txt

    将结果输出到新文件。

这只是sed的一些基本用法,它还有更多高级的功能和选项。查阅sed的手册页(man sed)以获取更详细的信息。

linux sed命令 常用技巧

sed是一个非常强大的文本处理工具,下面是一些在使用sed时常用的一些技巧:

  1. 使用正则表达式:
    sed支持正则表达式,可以在模式匹配时灵活应用。例如,使用.*匹配任意字符。

    1
    sed 's/^.*pattern.*$/replacement/' file.txt
  2. 引用变量:
    可以在sed命令中使用变量,但是需要小心引号的使用,以确保变量被正确解释。

    1
    2
    my_var="pattern"
    sed "s/$my_var/new_text/" file.txt
  3. 在匹配行之前或之后添加文本:
    使用i在匹配行之前插入文本,使用a在匹配行之后追加文本。

    1
    2
    sed '/pattern/i\inserted_text' file.txt
    sed '/pattern/a\appended_text' file.txt
  4. 使用变量删除行:
    使用变量作为删除条件,可以动态指定要删除的内容。

    1
    2
    delete_var="pattern"
    sed "/$delete_var/d" file.txt
  5. 逆序打印文件:
    使用-n抑制默认输出,然后使用p打印行。

    1
    sed -n '1!G;h;$p' file.txt
  6. 删除空白行:
    删除文件中的空白行,包括只包含空格或制表符的行。

    1
    sed '/^\s*$/d' file.txt
  7. 使用变量替换定界符:
    如果模式或替换文本中包含斜杠(/),可以使用其他定界符替代。

    1
    sed "s|/old/|new|" file.txt
  8. 只处理文件的部分行:
    使用行号范围限定sed的操作范围。

    1
    sed '10,20s/old/new/' file.txt
  9. 反向引用匹配组:
    在替换文本中使用\1\2等引用匹配组。

    1
    sed 's/\(pattern1\)\(pattern2\)/\2\1/' file.txt
  10. 使用-i选项直接修改文件:
    使用-i选项可以直接在原文件上修改,但请小心使用,确保备份数据。

    1
    sed -i 's/old/new/' file.txt

这些技巧只是sed的冰山一角。要深入了解,建议查看sed的文档和手册页(man sed)。

linux sed命令 高级技巧

以下是一些在使用sed时的高级技巧,这些技巧可以更灵活地处理文本:

  1. 使用地址范围:
    定义sed的操作范围,可以是行号范围,也可以是正则表达式匹配的范围。

    1
    2
    sed '10,20s/old/new/' file.txt
    sed '/start/,/end/s/old/new/' file.txt
  2. 使用命名标签:
    使用b命令和标签来进行跳转,可以提高脚本的可读性和复用性。

    1
    sed ':label /pattern/ { s/old/new/; b label; }' file.txt
  3. 处理多行模式空间:
    N命令可以将下一行追加到模式空间中,使用\n表示换行。

    1
    sed 'N;s/\n/ /' file.txt
  4. 保留匹配行之外的内容:
    使用!来反转匹配,保留非匹配行。

    1
    sed '/pattern/!s/unwanted_text/new_text/' file.txt
  5. 只处理匹配的部分:
    使用匹配组来保留或替换匹配的部分。

    1
    sed 's/\(start_pattern\)keep_this_part\(end_pattern\)/\1replace_this_part\2/' file.txt
  6. 使用hH保存和追加到保持缓冲区:
    将匹配的行保存到保持缓冲区,使用h,将下一行追加到保持缓冲区,使用H

    1
    sed -n '/pattern/{h;};/next_pattern/{H;x;p;}' file.txt
  7. 自定义分隔符:
    可以使用不同的分隔符,以避免在正则表达式中转义斜杠。

    1
    sed 's|/old/|new|' file.txt
  8. 执行sed脚本:
    sed脚本保存到文件中,并通过-f选项执行。

    1
    sed -f script.sed file.txt
  9. 在指定行数插入或删除行:
    使用sed在指定行数之前或之后插入行,或者删除指定行。

    1
    2
    3
    sed '2i\inserted_line' file.txt
    sed '2a\appended_line' file.txt
    sed '2d' file.txt
  10. 逐行处理:
    使用sed逐行处理文件,对每一行执行命令。

    1
    sed -e 's/old/new/' -e 'p' file.txt

这些高级技巧可以使sed更加强大和灵活,但也需要谨慎使用,以确保正确处理文本数据。深入了解sed的文档和手册页对于理解和应用这些技巧非常有帮助。

sed

  • sed, 利用脚本来处理文本文件,主要用来自动编辑一个或多个文件,简化对文件的反复操作,编写转换程序等
  • sed [-hnV] [-e