当我运行命令时
history | grep "apt-get install"
它返回以下文本
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 :(得分:0)
你可以使用sed和cut的混合来去除空白并选出你想要的字段。
history | grep "apt-get install" | sed 's/^ *//' | cut -d' ' -f3-
sed命令将从历史输出中拉出前导空格,cut将把输出拆分为列,允许您只选择命令。
答案 1 :(得分:0)
您可以将输出传输到sed并去除不需要的部分,如下所示:
history | grep "apt-get install" | sed 's/^\s*[[:digit:]]\+\s*//'
sed正则表达式将匹配:
^
:在每行的开头
\s*
:任意数量的空格字符,后跟
[[:digit:]]\+
:一个或多个数字,后跟
\s*
任意数量的空格(渴望)