简介

  • 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
  • 参数说明
    • -e<script> : 以选项中指定的script来处理输入的文本文件
    • -f<script 文件> :以选项中指定的script文件来处理输入的文本文件
    • -h : 显示帮助
    • -n : 仅显示script处理后的结果
  • 动作说明
    • a : 新增,a的后面可以接字符串,这些字符串会在新的一行出现(目前的下一行)
    • c : 取代,c的后面可以接字符串,这些字符串可以取代n1, n2之间的行
    • d : 删除,因为是删除,所以d后面通常不接任何东西
    • i : 插入,i的后面可以接字符串,而这些字符串会出现在新的一行(目前的上一行)
    • p : 打印,将某个选择的数据打印
    • s : 取代,可以直接进行取代的工作,通常搭配正则表达式

在Linux中,sed命令是一种流编辑器,用于对文本进行流式处理和转换。它读取输入文本的每一行,根据指定的规则进行模式匹配和替换操作,并将处理后的文本输出到标准输出或指定的文件中。

以下是sed命令的一般语法:

1
sed [options] 'command' input_file

其中,options是可选的一些选项,command是要执行的sed命令,input_file是要处理的输入文件。

以下是一些常见的sed命令选项和用法:

  1. 替换文本:
    1
    
    sed 's/pattern/replacement/' input_file
    

    此命令将输入文件中的每一行,将匹配pattern的内容替换为replacement

  2. 删除行:
    1
    
    sed '3d' input_file
    

    此命令将删除输入文件中的第三行。

  3. 使用正则表达式进行匹配:
    1
    
    sed -n '/pattern/p' input_file
    

    此命令将仅打印匹配正则表达式pattern的行。

sed命令还支持其他一些高级功能,如全局替换、插入、追加和删除文本行,条件执行等。您可以使用不同的sed命令和选项来完成各种文本处理任务。

请注意,sed命令是一种非交互式的编辑器,它将按照指定的命令对输入文本进行处理,并将结果输出到标准输出或指定的文件中。它不会修改原始文件,除非您使用重定向符号(>)将输出重定向到原始文件。