【问题标题】:how to search and replace content of a file ,starting from a specific line number in bash如何从bash中的特定行号开始搜索和替换文件的内容
【发布时间】:2016-07-28 13:57:37
【问题描述】:

我有以下文件。

$ cat testfile
line 1
line 2
line 3
line 4
line 5
line 6
$

我需要从第 2 行到末尾搜索并替换所有字符串 'line' 为 'LINE' 。我试过如下

 $sed '2 s/line/LINE/g' testfile
 line 1
 LINE 2
 line 3
 line 4
 line 5
 line 6
 $

但我需要的输出是:

line 1
LINE 2
LINE 3
LINE 4
LINE 5
LINE 6

$

如何单独使用 sed 命令实现它。

【问题讨论】:

    标签: bash sed pattern-matching


    【解决方案1】:

    试试这个:

    # sed '2,$ s/line/LINE/g' /tmp/testfile 
    line 1
    LINE 2
    LINE 3
    LINE 4
    LINE 5
    LINE 6
    

    2,$表示从第二行到结尾。

    【讨论】:

    • 谢谢@fazlin ..这就是我要找的:)
    【解决方案2】:

    您正在寻找:

    sed '2,$s/line/LINE/g' file
    

    我建议你阅读 sed 的 man/info 页面,即“地址”部分。

    【讨论】:

      【解决方案3】:

      见:https://www.gnu.org/software/sed/manual/html_node/Addresses.html

      sed '2,$ s/line/LINE/' testfile
      

      如果您想就地更改文件(使用带有 sed 的 -i 参数)我建议使用 ed 而不是 sed。

      echo -e '2,$ s/line/LINE/\nw' | ed -sv testfile
      

      【讨论】:

        猜你喜欢
        • 2017-01-16
        • 1970-01-01
        • 2011-07-14
        • 2019-01-03
        • 2021-10-19
        • 1970-01-01
        • 2017-11-03
        • 1970-01-01
        • 2011-02-17
        相关资源
        最近更新 更多