簡體   English   中英

這個Sed命令究竟是如何工作的?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM