如何删除任何包含3个或更少斜杠但保留更大链接的行?
A. http://two/three/four
B. http://two/three
C. http://two
A会留下别的。
由于
答案 0 :(得分:3)
搜索:(?m)^(?:[^/]*/){0,3}[^/]*$
替换:""
在demo上,查看只有3个或更少斜线的行匹配。这些是尼克斯的。
解释正则表达式
(?m) # set flags for this block (with ^ and $
# matching start and end of line) (case-
# sensitive) (with . not matching \n)
# (matching whitespace and # normally)
^ # the beginning of a "line"
(?: # group, but do not capture (between 0 and 3
# times (matching the most amount
# possible)):
[^/]* # any character except: '/' (0 or more
# times (matching the most amount
# possible))
/ # '/'
){0,3} # end of grouping
[^/]* # any character except: '/' (0 or more times
# (matching the most amount possible))
$ # before an optional \n, and the end of a
# "line"
答案 1 :(得分:1)
sed
您可以使用以下sed
命令执行此操作,假设您的行位于foo.txt
:
sed -n '/\(.*\/\)\{4,\}/p' foo.txt
-n
选项不输出,但由于/
末尾的p
命令,无论如何都会打印与sed
之间的模式匹配的行。表达
模式是:/
至少发生4次,每次都可能先于其他任何字符串。