【发布时间】:2019-06-29 12:25:56
【问题描述】:
我正在尝试使用标准 bash 工具(如 grep、awk/gawk、sed ...)获取字符串中每次出现给定字符/模式之前的字符。
Step I:获取每次出现:之前的字符
例子:
字符串 1 => :hd:fg:kl:
字符串 2 => :df:lkjh:
字符串 3 => :glki:l:s:d:
预期结果
结果 1 => dgl
结果 2 => fh
结果 3 => ilsd
我用 awk 尝试了很多次,但都没有成功
Step II: 在结果字符串的每个字符之间插入一个给定的字符
以/ 为例
结果 1 => d/g/l
结果 2 => f/h
结果 3 => i/l/s/d
这一步我有一个 awk 表达式awk -F '' -v OFS="/" '{$1=$1;print}'
我不知道是否可以使用 awk 或 sed 执行 Step I 以及为什么不一次执行 Step I 和 Step II。
亲切的问候
【问题讨论】:
-
你可能会发现这个问题很有帮助stackoverflow.com/questions/2777579/…
-
@moocan,请尝试选择任何答案作为正确答案并完全关闭问题,也请参阅此链接以获取更多详细信息stackoverflow.com/help/someone-answers
-
如果可能发生这种情况,您应该在示例输入/输出中包含一个背靠背冒号的情况(例如 foo::bar),因为根据您的要求,这可能难以处理所以。输出是
o还是o:还是别的什么?如果它不能发生,那么在您的问题中添加一个声明。 -
@RavinderSingh13 很抱歉我的回复迟了,因为我离线了
-
@Ed Morton,这在我的情况下不会发生......但这是一个非常好的建议