我正在尝试从历史命令中获取命令。
ubuntu@ip-172-31-13-192:~/redacted$ history
1 ls
2 sudo apt-get install git -y
3 git clone https://redacted@bitbucket.org/redacted/redacted.git
4 ls
5 cd redacted
ubuntu@ip-172-31-13-192:~/redacted$ history | cut -d ' ' -f 2
没有输出。怎么了?
答案 0 :(得分:2)
每行的开头也有空格,因此第2列很可能只是另一个空格。由于历史记录的格式已修复,因此您可以将cut
设置为字符数,例如:
[mureinik@computer /]$ history | cut -c8-
答案 1 :(得分:0)
通过sed,
history | sed 's/^ *[^ ]* *//'
它会删除所有前导空格以及数字。
答案 2 :(得分:0)
这是因为cut
获取了一个空格作为字段分隔符,将每个空格定义为不同的字段。
所以每当你有这样的历史:
1 ls
2 sudo apt-get install git -y
3 git clone https://redacted@bitbucket.org/redacted/redacted.git
4 ls
5 cd redacted
^
what you get
当您执行cut -d' ' -f2
时,您会在每个数字后面获得空格。
用tr
挤压空格:
history | tr -s ' ' | cut -d' ' -f2
使用awk
打印第二个字段。对于awk
,许多字段不计,因此以下内容将始终打印第二个文本块:
history | awk '{print $2}'