linux - 如何解析一行——引号内的内容或使用 unix 的模式

标签 linux unix scripting split

我正在尝试抓取一些格式化文本中的内容。例子

在文件中输入:

i would like to say ("hi")

i am leaving, ("bye")

who is there? ("crazy cat")

I have a ("dirty dog that needs water")


//

如何只抓取 ("") 中的字符串。

我试图通过空格或具有 ("的字符串来解析它,但我无法获取带有空格的字符串...

目前我正在使用

 cat get_list.txt | tr ' ' '\n'

最佳答案

尝试使用 look around regex techniques 执行此操作:

$ grep -oP '\("\K[^"]+(?="\))' file.txt
bye
crazy cat
dirty dog that needs water

或使用 可移植解决方案仍在使用 look around regex techniques :

perl -lne 'print $& if /\("\K[^"]+(?="\))/' file.txt

或者简单地说:

cut -d'"' -f2 file.txt

关于linux - 如何解析一行——引号内的内容或使用 unix 的模式,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15348778/

相关文章:

Javascript读取本地文件适用于Windows但不适用于Linux

c# - 让鼠标指针进行 super 跳跃?

php - 使用 Subversion 制作 PHP 项目的生产版本

scripting - 使用应用程序自动执行重复任务的最佳自动化或脚本工具是什么?

php - Linux通过命令行执行php文件

c++ - 使用arm-none-linux-gnueabi-g++编译时不执行system()

c++ - 如何强制使用本地共享库而不是系统库?

c - 如何解释 PTRACE_PEEKTEXT 返回值

使用 C unix 命令或 C 更改文件中的特定单词

linux - 如何查找具有特定扩展名列表的所有文件