当谈到grep / awk / sed / cut时,我总是一个菜鸟,所以我需要帮助。我有这个:history | tail -n 1 | pbcopy
返回1968* mv ~/iPhoto\ Library.zip ./ ; bell
这很好,因为这是我运行的最后一个命令,但我需要在开头删除数字。我尝试了awk
,grep
,sed
和cut
的各种迭代,但就像我说的那样,当涉及到这些命令时,我就是一个菜鸟。我该怎么做?
答案 0 :(得分:2)
你可以试试这个sed命令,
history | tail -n 1 | pbcopy | sed 's/^[0-9]\+//g'
通过awk,
history | tail -n 1 | pbcopy | awk '{sub(/^[0-9]+/,"")}1'
输出:
mv ~/iPhoto\ Library.zip ./ ; bell
答案 1 :(得分:1)
只需将输出传输到
awk '{for(i=2;i<NF;i++)printf "%s",$i OFS; if (NF) printf "%s",$NF; printf ORS}'
输出:
mv ~/iPhoto\ Library.zip ./ ; bell
答案 2 :(得分:0)
在zsh
中,您只需告诉history
(这是fc -l
的同义词),就不能使用-n
打印数字。此外,您可以使用-1
打印最后一个条目:
history -n -1 | pcopy
fc -l -n -1 | pcopy
在bash
history
中没有此选项,但还有一个fc
命令,它甚至支持所需的选项。不幸的是,&#39;压制命令号码&#39; (来自man 1 bash
)似乎意味着打印TAB而不是&#39;,因此输出以TAB和空格开头,可以使用sed删除
fc -l -n -1 | sed 's/^\t //' | pcopy