![在文件中找到字符串后返回接下来的 50 个字符](https://linux22.com/image/151496/%E5%9C%A8%E6%96%87%E4%BB%B6%E4%B8%AD%E6%89%BE%E5%88%B0%E5%AD%97%E7%AC%A6%E4%B8%B2%E5%90%8E%E8%BF%94%E5%9B%9E%E6%8E%A5%E4%B8%8B%E6%9D%A5%E7%9A%84%2050%20%E4%B8%AA%E5%AD%97%E7%AC%A6.png)
我对正则表达式和搜索模式非常糟糕,所以我真的不知道从哪里开始。
我需要<td id="latest_button">
在 test.txt 中查找并返回其后接下来的 50 个字符。它是针对 bash 脚本的,所以其他语言会很痛苦。
答案1
我通常使用 grep -o 来实现此目的:
grep -o '<td id="latest_button">..................................................'
或者使用扩展模式:
grep -E -o '<td id="latest_button">.{50}'
当然,您还可以获得标签本身。
答案2
我不知道像您尝试那样解析 html 是否是最好的主意,但无论如何,这有效,如果您有换行符,如果没有,您可以删除 tr 部分:
cat yourFile.html | tr -d '\n' | awk -F'<td id="latest_button">' '{print $2}' | cut -c -50
因此, tr 将去掉换行符,将所有内容视为一个行字符串。
awk -F 将分隔符设置为标签, print $2 ,打印分隔符后面的部分
cut -c -50 仅打印前 50 个字符