使用cut来显示上一个命令linux的信息

时间:2018-01-12 11:23:16

标签: linux bash shell

我正在尝试从他们登录系统的位置获取用户名和IP。

我使用了以下命令:

last -i | grep 'Jan 12' | cut -f1,3

但结果我得到了全线。

但是当我使用awk时:

last -i | grep 'Jan 12' | awk '{print $1, $3}'

我得到了正确的结果。

为什么在cut命令的情况下输出错误?

任何帮助都将受到高度赞赏。

2 个答案:

答案 0 :(得分:4)

cut的默认分隔符是一个选项卡,而awk中的默认输入字段分隔符是任何空格,即空格或制表符。

要在cut中获得相同的行为,您需要在-d ' '中添加cut来制作它:

last -i | grep 'Jan 12' | tr -s ' ' | cut -d ' ' -f1,3

tr -s ' '需要将多个空格压缩到一个空格中。

但是,使用awk可以完全跳过grep并使用:

last -i | awk '/Jan 12/{print $1, $3}'

答案 1 :(得分:0)

cut中,默认分隔符为[Tab]。同样使用-d键,您只能将单个字符指定为分隔符。 在last输出中,连续有8个空格。

因此,最好的方法是在示例中使用awk

糟糕,但有切割的工作解决方案:

last | grep 'Jun 23' | sed 's/\s\s*/ /g' | cut -d' ' -f1,3