x=`src/lstat64 $TEST_DIR/$tmp.1 | sed -n -e '/ Links: /s/.*Links: *//p'`
在这个脚本中。我明白这部分,"/s/.*Links: *//p'"
唯一不明白的是'/ Links: '
这是什么"/ "
意思?
答案1
/ Links: /
是一个地址过滤器。它的意思是:“仅对与过滤器匹配的行应用以下操作。”在这种情况下,过滤器是一个正则表达式;它也可以是行号、行区域、开始正则表达式和停止正则表达式组合,甚至是“每n行”一些实现的条件sed
。
答案2
你有误会。您的命令可以解释为:
sed - n -e '/pattern/ s/pattern/replace pattern/p'
所以前两个/
属于/pattern/
,这意味着匹配正则表达式:
/regexp/
Match lines matching the regular expression regexp.
答案3
我唯一不明白的是“/链接:”
你的sed
表情过滤器与模式匹配的行Links:
(带有前导和尾随空格)并执行替换
s/.*Links: *//
此外,使用-n
抑制图案空间的自动打印并p
打印当前图案空间。
总而言之,管道将仅打印输入中sed
匹配的行Links:
后执行替换s/.*Links: *//
。
引用自man sed
:
-n, --quiet, --silent
suppress automatic printing of pattern space
p Print the current pattern space.
/regexp/
Match lines matching the regular expression regexp.
s/regexp/replacement/
Attempt to match regexp against the pattern space. If
successful, replace that portion matched with replacement. The
replacement may contain the special character & to refer to that
portion of the pattern space which matched, and the special
escapes \1 through \9 to refer to the corresponding matching
sub-expressions in the regexp.