gpt4 book ai didi

sed - 在 bash 中组合 sed 命令

转载 作者:行者123 更新时间:2023-12-04 07:44:39 24 4
gpt4 key购买 nike

我的目标是尝试结合以下两个 sed 命令来打印出一个输出。第一个命令用于去除 HTML 文件的 HTML 标签,第二个命令用于指定我只需要文件的第 11 到 16 行。

sed -e 's/<[^>]*.//g' file.html

sed -n '11,16p' file.html
我已经玩了一段时间了,当我打算显示第 11-16 行的输出时,似乎只能获得带有 HTML 标签的第 11-16 行的输出,或没有 HTML 的所有行没有任何 HTML 标签。任何帮助将不胜感激,谢谢!

最佳答案

天真的方法是使用管道:

sed 's/<[^>]*.//g' file.htm | sed -n '11,16p'
你也可以结合地址和模式:
sed -n '11,16 s/<[^>]*.//pg' file.html
这里,
  • -n将抑制默认行输出
  • 11,16 - 将设置地址,第 11 到 16 行
  • s/<[^>]*.// - 会寻找 < ,然后是除 > 之外的零个或多个字符然后是任何一个字符(你是说 > 吗?)
  • p - 打印替换结果
  • g - 行
  • 上出现的所有事件

    online demo (缩短版,第 2-4 行):
    #!/bin/bash
    s="<111111>aaa<111111>
    <22222>bbb<111111>
    <33333>ccc<111111>
    <44444>ddd<111111>
    <55555>eee<111111>"
    sed -n '2,4 s/<[^>]*.//pg' <<< "$s"
    输出:
    bbb
    ccc
    ddd

    关于sed - 在 bash 中组合 sed 命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/67264392/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com