【发布时间】:2020-08-16 05:56:07
【问题描述】:
我一直在寻找一种简单的方法来屏蔽(即用 * 替换)使用 sed 在每一行中给定模式的第 1 到第 3 次出现。
输入文本的格式是;
$ cat input
1234 4321 2356 7890
3456 4567 8765 0981
2345 2167 9876 1234
所需的输出;
**** **** **** 7890
**** **** **** 0981
**** **** **** 1234
环顾四周后,我找到了替换指定模式的第 n 次出现的方法。在这里,您如何替换给定输入中每行的第二个块。
$ cat input | sed 's/[0-9]\{4\}/****/2'
1234 **** 2356 7890
3456 **** 8765 0981
2345 **** 9876 1234
我们还可以替换 所有出现的给定模式 从第 n 个出现开始。以下是你的做法。
$ cat input | sed 's/[0-9]\{4\}/****/2g'
1234 **** **** ****
3456 **** **** ****
2345 **** **** ****
P.S 我会很感激简单而愚蠢的解决方案。不是 awk 或 sed 中的标签和循环的解决方案。
【问题讨论】:
标签: sed text-processing