【发布时间】:2018-06-10 11:43:09
【问题描述】:
输入字符串:
1234 5678 9101 1234
2999 5178 9101 2234
9999 5628 9201 1232
8888 3678 9101 1232
上面的输入字符串在1st、2nd和3rd行之后有空格。最后一位数字之后的每一行都有空格,然后新行开始,除了最后一行。
最后一行以最后一个字符(数字'2')结束,之后没有其他内容。
必选匹配:我只想匹配每行中的前三个数字块(匹配不应包括块之间的单个空格)。
使用 sed 的预期输出:
**** **** **** 1234
**** **** **** 2234
**** **** **** 1232
**** **** **** 1232
我的方法:我使用否定的lookbehind(我知道 sed 不支持环视断言)\d{4}(?! {2,}) 在前三行中仅匹配前三个数字块,但在第四行行匹配所有数字块(显然最后一行在最后一个数字之后没有2个空格。)
【问题讨论】:
-
请在代码标签中也向我们展示预期的输出。
-
@RavinderSingh13 我添加了一个小提琴。不想使用 awk。我的任务是使用 sed 将每行前三个块中的每个数字替换为星号。
-
我仍然没有看到预期的输出,请在代码标签中添加它。
-
@RavinderSingh13 我添加了预期的输出。但我只想要正则表达式中所需的匹配