【发布时间】:2014-05-24 19:10:04
【问题描述】:
假设我有一个名为 text.txt 的文件 在 text.txt 中,我有许多以下模式:
/**
* @something
**/
我想将此模式替换为空字符串。执行此操作的最简单的 Linux 命令是什么?
- “grep”不起作用,因为这是多行模式。
- 我尝试了“sed”,但无法正常工作。
- 我想“awk”可能很容易,但“awk”似乎很复杂,我对“awk”并不熟悉。
【问题讨论】:
-
sed 绝不应尝试用于任何多行问题,它严格用于单行替换。 awk 并不复杂,它只需要一个小的范式转换即可使用它,因为它默认提供了许多您必须在其他工具/语言中手动编写的用于解析文本文件的功能(例如读取行、拆分为字段)等)但是一旦你使用了几次,它并不比任何其他基于 Algol 的语言复杂。
-
您会根据对需求的几种不同解释获得答案。如果您提供一个真正具有代表性的输入文件(即包含至少 2 个您想要删除的模式的文件)和相关的预期输出,您最有可能获得可靠的答案。
标签: regex linux command-line sed awk