[英]How exactly does this Sed command work?
sed 's@.*/.*\.@.@'
该命令是查找目录中所有文件扩展名的较大命令的一部分。
find . -type f -name '*.*' | sed 's@.*/.*\.@.@' | sort | uniq
我理解find
返回所有带扩展名的文件,我知道sed只返回扩展名,然后sort / uniq是不言自明的。
起初,我对@
符号感到困惑,但我现在最好的猜测是它是Regex的一部分。
让我感到困惑的是无法确定它是如何显式工作的,而我在手册中找到的最接近的匹配语法是s/regexp/new/
仍然与命令的语法不匹配。
在s/regexp/replacement/
语法中, /
可以使用任何其他字符代替,比如,
, :
, @
等,这是如果你的正则表达式本身就含有非常有用的/
字符,比如你的例子.*/.*\\.
。
但是,您的命令可以简化一点:
find . -type f -name '*.*' | sed 's/.*\././' | sort -u
在这里,我简化了正则表达式,使其不再包含/
字符。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.