让我们假设我有一个名为inputFile的文件,看起来像这样:
blahblah token substring token something else token substring2 token
整个文件只包含一条长线。
我想用sed(substring,substring2)提取令牌之间的子字符串。
现在我有:
[sed "s/^.* \?token\(.* \)token.* \?/\1/"][1] inputFile > outputFile
我试图根据这些问题来做这件事,但不幸的是,它只返回最后一个子字符串
使用bash提取文本文件中两个标记之间的行
如何替换多个模式一次与se?
如何在两个图案之间选择线条?
有解释的答案会很好。
更新实际输入代码:
<archive><message id="0"><receiver>apr</receiver><sender>gtr</sender><text>52333</text><sendTime>554</sendTime><deliveryTime>765</deliveryTime></message><message id="0"><receiver>apr</receiver><sender>gtr</sender><text>4332</text><sendTime>764</sendTime><deliveryTime>922</deliveryTime></message></archive>
预期产出:
apr gtr 52333
apr gtr 4332
问题在于sed
是贪婪的,因此如果添加全局标志(g
),上述命令将仅返回substring2
:
您可以使用awk
将字段分隔符FS
重新定义为字符串token
。这样,字符串位于偶数字段位置:
$ echo "blahblah token substring token something else token substring2 token" | \
awk -F 'token' '{for(i=2;i<=NF;i+=2) {print $i}}'
substring
substring2
更新:
如果您的输入是xml文件,您可能需要执行以下操作:
<archive>
<message id="0">
<receiver>apr</receiver>
<sender>gtr</sender>
<text>52333</text>
<sendTime>554</sendTime>
<deliveryTime>765</deliveryTime>
</message>
<message id="0">
<receiver>apr</receiver>
<sender>gtr</sender>
<text>4332</text>
<sendTime>764</sendTime>
<deliveryTime>922</deliveryTime>
</message>
</archive>"
导致cmd:
xmlstarlet sel -t -m '//message' -v receiver -o " " -v sender -o " " -v text -n <file>
哪个输出
apr gtr 52333
apr gtr 4332
问题内容: 我想在两种模式之间添加一些大代码: File1.txt infile.txt 我想在 第一 和 第二 之间添加 File1.txt 内容: 所需输出: 我可以使用sed命令使用两种模式进行搜索,但是我不知道如何在它们之间添加内容。 问题答案: 由于代表 读取文件 ,请使用: 您可以在此处找到一些信息:使用’r’命令读取文件。 为就地版本添加(即)。 要执行此操作,无论字符大小写如何,均
问题内容: 我有一个包含以下行的文件: 我想在此文件上执行命令以仅提取参数名称,如以下输出所示: 这个命令可能是什么? 问题答案: 你要。 这将是一个快速而肮脏的hack:
我不熟悉词法分析,如果标题不够清晰,我很抱歉。 基本上,我使用Jison来解析一些文本,并试图让lexer理解缩进。这里有一点值得商榷: 到目前为止,几乎所有这些都像预期的那样工作。一个问题是我试图返回一个令牌数组的行。看来Jison只是将该数组转换成一个字符串,这导致我得到一个解析错误,如。 我希望我能做的是手动将一些令牌推到堆栈上。也许有一个像或类似的东西。但是Jison的文档不是很好,我需要
主要内容:GCC编译多文件项目通过前面几节的学习,读者已经了解了如何使用 gcc(g++)指令调用 GCC 编译器编译(包括预处理、编译、汇编和链接)C 或者 C++ 源代码,例如: [root@bogon demo]# ls demo1.c demo2.c [root@bogon demo]# cat demo1.c #include<stdio.h> int main(){ printf("GCC:https:/
问题内容: 我有一个千兆字节的JSON文件。该文件由每个不超过几千个字符的JSON对象组成,但是记录之间没有换行符。 使用Python 3和模块,如何一次将一个JSON对象从文件读入内存? 数据在纯文本文件中。这是类似记录的示例。实际记录包含许多嵌套的字典和列表。 以可读格式记录: 实际格式。新记录一个接一个地开始,没有任何中断。 问题答案: 一般而言,将多个JSON对象放入一个文件会使该文件 无
我正在从事一个需要oauth2令牌才能进行通信的项目。后端给了我一个curl命令,但我不知道如何在Unity中将其转换为WWW格式,因为我以前没有使用http或json文件的经验。你能帮我取一下代币吗?谢谢下面是curl代码的样子: $curl-v-u{CLIENT_ID}:{CLIENT_SECRET}”https://api.domo.com/oauth/token?grant_type=cl