2016-02-12 50 views
0

我試圖從文件中使用sed就地刪除一個特定的url,目前下面的命令運行但url仍在文件中。謝謝:)sed刪除文件中的url

列表

xxxx://www.xxx.com/xxx/xx/xxx/file.html 
xxxx://www.xxx.com/xxx/xx/xxx/file1.bam 
xxxx://www.xxx.com/xxx/xx/xxx/file2.bam 
xxxx://www.xxx.com/xxx/xx/xxx/file1.vcf.gz 
xxxx://www.xxx.com/xxx/xx/xxx/file2.vcf.gz 

所需的輸出

file.html 
file1.bam 
file2.bam 
file1.vcf.gz 
file2.vcf.gz 

sed命令

sed -i -e 's|xxxx://www.xxx.com/xxx/xx/xxx/.*/||' /home/cmccabe/list 

回答

1

你有你的sed腳本中列出的額外目錄。看事情如何排隊:

   xxxx://www.xxx.com/xxx/xx/xxx/file.html 
              ↓ 
sed -i -e 's|xxxx://www.xxx.com/xxx/xx/xxx/.*/||' /home/cmccabe/list 

你的替代似乎需要該文件在目錄中存在下xxxx://www.xxx.com/xxx/xx/xxx/而不是目錄本身。刪除額外的目錄要求,或使其成爲可選項,並且您的sed替換按原樣運行。

什麼你要找的是可能之一:

sed -i -e 's|xxxx://www\.xxx\.com/xxx/xx/xxx/||' /home/cmccabe/list 

sed -i -r -e 's|xxxx://www\.xxx\.com/xxx/xx/xxx/(.+/)?||' /home/cmccabe/list 

,或者只允許一級子目錄:

sed -i -r -e 's|xxxx://www\.xxx\.com/xxx/xx/xxx/([^/]+/)?||' /home/cmccabe/list 
0

它應該是:

sed 's|.*/||' /home/cmccabe/list 

.*/將匹配貪婪從字符串直到/最後一次出現的開始和替換由什麼。

順便說一句,與xargs幫助下,你還可以使用basename命令:

xargs -a /home/cmccabe/list -n1 basename 
+0

嗯,沒有,我很確定的問題是,OP希望刪除一個*特定的* URL,而不是去掉所有的URL。他遇到的問題已在[我的回答](http://stackoverflow.com/a/35365970/1072112)中找到。 – ghoti

+0

我不確定要求。讓我們等待OP說什麼.. – hek2mgl

+0

感謝您的幫助,它現在正在從指定的URL中刪除文件:) – Chris