AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / unix / 问题 / 417698
Accepted
Huang
Huang
Asked: 2018-01-17 23:28:47 +0800 CST2018-01-17 23:28:47 +0800 CST 2018-01-17 23:28:47 +0800 CST

如何获取带有特殊单词开头和结尾的行字符串?[复制]

  • 772
这个问题在这里已经有了答案:
使用 sed、awk 或 grep [重复] 5 个答案 的多行模式匹配
4年前关闭。

这是包含 3 个句子的文件 strings.xml:

1.string name="schedulelist_nofiles">不存在注册议程!保佑,

这里缺少 tecla “Add” (Adicionar) para adicionar uma 行。细绳

2.你应该跳过这行!

3.string name="Programme_name">GUIA DE PROGRAMA字符串

我使用 cat 命令'cat strings.xml | grep "string name=" 但它只得到以下行:

string name="schedulelist_nofiles">不存在注册议程!保佑,

string name="Programme_name">GUIA DE PROGRAMA 字符串

我想得到这样的完整行,就像第 3 句一样,以“字符串名称”开头,以“字符串”结尾。我能为此做些什么?

linux shell
  • 3 3 个回答
  • 650 Views

3 个回答

  • Voted
  1. Stéphane Chazelas
    2018-01-17T23:48:31+08:002018-01-17T23:48:31+08:00

    与pcregrep:

    pcregrep -Mo '(?s)\bstring name=.*?\bstring\b' < file.xml
    
    • -M:多行模式,pcgrep 根据需要从输入中提取更多行以满足正则表达式
    • -o:打印与 GNU 中的正则表达式匹配的部分(如果正则表达式匹配整行grep,您可以省略它或替换为。-x
    • (?s):激活s导致.在换行符上也匹配的标志
    • .*?: non-greedy version of .*: 任意数量的字符,尽可能少。
    • \b: 字边界。

    如果你没有pcregrep,你可以用类似的东西做同样的perl事情:

    perl -l -0777 -ne 'print for /\bstring name=.*?\bstring\b/gs' < file.xml
    

    虽然这意味着将整个文件加载到内存中。

    • 0
  2. Stéphane Chazelas
    2018-01-18T00:31:57+08:002018-01-18T00:31:57+08:00

    使用sed,假设这些string name= ... string占满行并且所有string name=s 都由 a 终止string:

    sed '
      /^string name=/!d
      :1
      / string$/!{
        N
        b1
      }' < strings.xml
    
    • 0
  3. Best Answer
    Praveen Kumar BS
    2018-01-18T04:56:08+08:002018-01-18T04:56:08+08:00

    下面可以使用 sed oneliner 来实现相同的效果。测试它工作正常

    第一种方法1

    sed -n '/^string name.*string$/p'  filename
    

    在method1中,它将搜索以“string name”开头并以“string”结尾的行

    方法二

    sed -n '/^string name/p' filename | sed -n '/string$/p'
    

    在方法 2 中,首先它会搜索以“字符串名称”开头的行,然后搜索以字符串结尾的行

    输出

    string name="Programme_name">GUIA DE PROGRAMA string
    
    • 0

相关问题

  • grep -v grep 有什么作用

  • 需要一些系统调用

  • astyle 不会更改源文件格式

  • 如何将带有〜的路径保存到变量中?

  • 通过标签将根文件系统传递给linux内核

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    ssh 无法协商:“找不到匹配的密码”,正在拒绝 cbc

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    如何卸载内核模块“nvidia-drm”?

    • 13 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Wong Jia Hau ssh-add 返回:“连接代理时出错:没有这样的文件或目录” 2018-08-24 23:28:13 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST
  • Martin Hope
    Bagas Sanjaya 为什么 Linux 使用 LF 作为换行符? 2017-12-20 05:48:21 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve