bash脚本删除可选的<integer> <冒号>前缀</冒号> </integer>

时间:2014-02-16 11:16:51

标签: bash sed grep

我有一个包含所有内容的列表:

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 */

3 个答案:

答案 0 :(得分: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  

顺便说一句,您的列表看起来像是带有选项-n的grep命令的输出。如果是这样,那么在那里省略-n选项。此外,您可以使用单个sed命令完成整个任务。

答案 1 :(得分:1)

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

答案 2 :(得分:1)

以下是awk的另一种方式:

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