bash - Bash:提取出现多次的两个字符之间的文本
问题描述
我有一个文件,其中包含三元组形式的图的节点和边。每行有 3 个三元组,但有时中间或末尾有文本:
<samplenode> <sampleEdge> <samplenode>
<samplenode> sometimestheristextinbetween<sampleEdge> <samplenode> and sometimes more at the end
<samplenode> <samplereEdge> <samplenode>
我需要一个只打印三元组并忽略中间文本的命令。所以它应该只包含介于两者之间的字符<>
它可以包括<
或>
不包括。没关系,但应该分开。结果可能如下所示:
<samplenode> <sampleEdge> <samplenode>
<samplenode> <sampleEdge> <samplenode>
<samplenode> <sampleEdge> <samplenode>
我试过了sed
,删除了两个模式之间的所有内容(>
和之间的所有内容<
),但它从来没有按照我想要的方式工作。
有人对我有解决方案吗?也许与grep
or awk
?
问候
解决方案
这是一些使用分隔符的 awk 游戏,使用示例输入进行了测试。
awk -v RS="<" -F">" '{printf $1 (NR%3==1? "\n": " ")}' file
samplenode sampleEdge samplenode
samplenode sampleEdge samplenode
samplenode samplereEdge samplenode
推荐阅读
- ios - 用户无需付费即可获得应用内产品,Swift 4.2
- php - 如何一次编辑数据库中的多个值
- javascript - NG build failed 模块解析失败:意外的令牌 - 没有任何改变
- bash - 将文件内容发送到另一个命令 bash
- javascript - 在两个数组中检查相同属性值的快速方法?
- javascript - 如何修复“运行此应用程序的环境不支持此操作。”location.protocol“...”错误?
- angular - 具有多个匹配项的 Angular ngIf 不起作用
- qemu - 如何将 QEMU 输出重定向到 Windows cmd 控制台?
- json - 我在 Swift 4 中使用 JSON Codable 返回一个 NIL - 尝试从嵌套的 JSON 示例返回一个值
- python - 错误:找不到满足要求的版本