![如何从文件中获取内的文本(正则表达式)](https://linux22.com/image/931482/%E5%A6%82%E4%BD%95%E4%BB%8E%E6%96%87%E4%BB%B6%E4%B8%AD%E8%8E%B7%E5%8F%96%E5%86%85%E7%9A%84%E6%96%87%E6%9C%AC%EF%BC%88%E6%AD%A3%E5%88%99%E8%A1%A8%E8%BE%BE%E5%BC%8F%EF%BC%89.png)
我如何从位于 < > 和非 < > 之间的文件中获取文本:文件:
hello<world>
在<>内:世界
没有<>:你好
答案1
你的问题不够清楚。<
当>
相同的线?
<>
假设文件中一行只有一个标签,则以下命令可以完成您的工作:
$ sed 's/<.*>//' your_file
以上内容将删除全部文件中以 开头<
和以 结尾的字符串>
将打印剩余部分。
$ sed 's/^.*<//; s/>.*$//' your_file
上述操作将删除所有字符串最后的 <
行中的。然后,它将删除所有以第一的 >
在该行中。例如:
$ echo '111<aaa>222<bbb>333<ccc>444' | sed 's/^.*<//; s/>.*$//'
ccc
如果你想找到第一的“标签”,然后尝试这个:
$ echo '111<aaa>222<bbb>333<ccc>444' | sed 's/^[^<]*<//; s/>.*$//'
aaa
如果你想打印第一的 <
和最后的 >
, 尝试这个:
$ echo '111<aaa>222<bbb>333<ccc>444' | sed 's/^[^<]*<//; s/>[^>]*$//'
aaa>222<bbb>333<ccc