2016-10-18 71 views
1

,當我運行命令 history | grep "apt-get install" 返回下面的文本怎麼辦剝去grep的列終端

243 sudo apt-get install ntfs-3g 
    280 sudo apt-get install weavedconnectd 
    329 sudo apt-get install foremost 
    336 sudo apt-get install nbtstat -y 
    357 sudo apt-get install dnsmasq 
    372 sudo apt-get install debian-zfs 
    373 sudo apt-get install raspbian-zfs 
    374 sudo apt-get install zfs 
    434 sudo apt-get install hfsplus hfsutils hfsprogs -y 
    447 sudo apt-get install hfsprogs 
    703 sudo apt-get install xrdp 
    733 sudo apt-get install tightvncserver 
1126 sudo apt-get install lcdproc 
1151 sudo apt-get install webalizer 
1152 sudo apt-get install webalizer -yf 
1213 sudo apt-get install python-pip 
1214 sudo apt-get install python-dev 

,而我剛剛從sudo的上坡包名想。即數字的小條。以便將來如果我必須安裝這些軟件包,我可以直接將保存文件中的文本複製粘貼到shell。

+0

請參閱:[沒有行號的Bash歷史?](http://stackoverflow.com/q/7110119/3776858) – Cyrus

+0

'history | grep'apt-get install'|削減-d''-f5-' – twalberg

回答

0

您可以使用sed和cut混合去除空白並挑選出您想要的字段。

history | grep "apt-get install" | sed 's/^ *//' | cut -d' ' -f3-

sed命令將退出從歷史輸出的前導空格和削減將輸出拆分成多列,讓您只選擇了命令。

+0

但我試圖排除歷史使用--exclude標誌的歷史greps,但似乎沒有工作,你可以更新你的答案嗎? –

+0

我不確定你的意思,但可能是一個反向匹配來過濾掉你的grep命令?例如'grep -v「^ grep」'我認爲頂級評論也是一個很好的解決方案。 – squiguy

+0

我想排除所有以前的grep搜索結果使用-v標誌它不起作用。 –

0

你可以管道輸出到sed和剝離不需要的部分,像這樣:

history | grep "apt-get install" | sed 's/^\s*[[:digit:]]\+\s*//' 

sed的正則表達式匹配:

^:在每行
\s*的開頭:任何空格字符數量,依次爲
[[:digit:]]\+:一個或多個數字,後跟
\s*任意數量的空格s(渴望)