2013-02-08 70 views
1

我有一個包含大量主機名的文件。在我想要刪除的主持人之後,有些網址部分已被刪除。換句話說:刪除第一個/包括第一個/每行後的所有內容

google.com 
facebook.com 
acme.com/news/frontpage 
bbc.co.uk 
abc.com/home/index 

應該成爲

google.com 
facebook.com 
acme.com 
bbc.co.uk 
abc.com 
+1

感謝您的所有答案。 – smithy 2013-02-08 13:48:02

回答

2

方式一:

sed 's|/.*||' file 

結果:

google.com 
facebook.com 
acme.com 
bbc.co.uk 
abc.com 

您可能需要閱讀更多有關使用slash as a delimiter。 HTH。

+0

謝謝你的工作 - 只有一件小事 - 當我將輸出重定向到一個文件時,它在每行的末尾添加了^ M。我在Linux上。 – smithy 2013-02-08 13:39:02

+0

您可以運行'dos2unix file'去除DOS/Windows換行符字符。然後運行'sed'命令。或者,使用'awk'。試試:'awk -F /'{print $ 1}'RS =「\ r \ n」文件' – Steve 2013-02-08 13:41:38

+0

非常感謝。出於興趣,爲什麼會添加^ M?原始文件沒有它。 – smithy 2013-02-08 13:46:02

2

試着這樣做:

cut -d '/' -f1 file.txt 

awk -F/ '{print $1}' file.txt 

perl -F/ -lane 'print $F[0]' file.txt 
1
awk -F/ '{print $1}' your_file 

一其他的解決方案不能改變inplace文件。但是在史蒂夫的情況下,你需要爲該sed解決方案添加一個-i標誌。但是它仍然不能在solaris上工作。 perl solutiopn適用於所有平臺並替換原地

perl -pi -e 's/\/.*//g' your_file 
+0

已經說過...... – 2013-02-08 13:43:24

相關問題