2014-02-16 44 views
1

我有所有內容的列表是這樣的:的bash腳本取出選購<Integer><colon>前綴

1:NetworkManager-0.9.9.0-28.git20131003.fc20.x86_64 
avahi-0.6.31-21.fc20.x86_64  
2:irqbalance-1.0.7-1.fc20.x86_64 
abrt-addon-kerneloops-2.1.12-2.fc20.x86_64  
mdadm-3.3-4.fc20.x86_64 

我需要刪除N:但留下的字符串的其餘部分是。
曾嘗試:

cat service-rpmu.list | sed -ne "s/#[#:]\+://p" > end.list 
cat service-rpmu.list | egrep -o '#[#:]+' > end.list 

結果都在一個空end.list

//* the N:, just denotes an epoch version */ 
+1

是什麼'N'?你的預期產出是什麼 – Kent

+0

Number ||整數 – Frankly3D

回答

1

隨着sed

sed 's/^[0-9]\+://' your.file 

輸出:

NetworkManager-0.9.9.0-28.git20131003.fc20.x86_64 
avahi-0.6.31-21.fc20.x86_64  
irqbalance-1.0.7-1.fc20.x86_64 
abrt-addon-kerneloops-2.1.12-2.fc20.x86_64  
mdadm-3.3-4.fc20.x86_64 

順便說一句,你的列表看起來像一個grep命令的輸出與選項-n。如果這是真的,那麼在那裏省略-n選項。此外,您的整個任務很可能只需使用一個sed命令即可完成。

+0

是更長的事情的一部分: – Frankly3D

+0

是一個更長的事情的一部分:'find/usr/lib/systemd/etc/systemd -name'* .service'-printf'* /%f \ n'> find.list \ && yum whatprovides $(cat find.list)| sed -n -e'/ x86_64/{p; n;}'> service-rpm.list \ && cat service-rpm.list | egrep -o'^ [^] +'> service-rpmu.list'「我還沒有想過把所有的東西都傳送到目前爲止,檢查它一點一點」 – Frankly3D

+0

目前只是有Ubuntu的。可以稍後在fedora上進行測試 – hek2mgl

1
awk -F: '{ sub(/^.*:/,""); print}' sample 
+0

謝謝您在我的答案的輸出部分停用語法高亮顯示。好的調整:) – hek2mgl

1

這裏是另一種方式與awk

awk -F: '{print $NF}’ service-rpmu.list