我想通过终端中的一个简单命令询问我的计算机我上次启动系统的时间,并且我希望答案弹出在仅包含数字的文本文件中。我使用了以下命令:
who -b >> file.txt
这有效但它说:
system boot xxxx-xx-xx xx:xx
我只想在文本文件中显示日期和时间。有人知道如何用一个简单的命令删除文本,只保留文本文件中的数字吗?
答案1
who -b | sed 's/.* //' >> file.txt
适用于我的系统上安装的所有语言环境(见下面的测试),基本上它会删除所有内容,直到最后出现两个连续的空格字符,这应该与时间戳的开头匹配,而不管您的语言环境设置如何。
$ for i in $(locale -a); do printf "%-10s: %s\n" $i "$(LANG=$i who -b | sed 's/.* //')"; done
C : Sep 23 20:22
C.UTF-8 : 2017-09-23 20:22
de_AT.utf8: 2017-09-23 20:22
de_BE.utf8: 2017-09-23 20:22
de_CH.utf8: 2017-09-23 20:22
de_DE.utf8: 2017-09-23 20:22
de_LI.utf8: 2017-09-23 20:22
de_LU.utf8: 2017-09-23 20:22
en_AG : 2017-09-23 20:22
en_AG.utf8: 2017-09-23 20:22
en_AU.utf8: 2017-09-23 20:22
en_BW.utf8: 2017-09-23 20:22
en_CA.utf8: 2017-09-23 20:22
en_DK.utf8: 2017-09-23 20:22
en_GB.utf8: 2017-09-23 20:22
en_HK.utf8: 2017-09-23 20:22
en_IE.utf8: 2017-09-23 20:22
en_IN : 2017-09-23 20:22
en_IN.utf8: 2017-09-23 20:22
en_NG : 2017-09-23 20:22
en_NG.utf8: 2017-09-23 20:22
en_NZ.utf8: 2017-09-23 20:22
en_PH.utf8: 2017-09-23 20:22
en_SG.utf8: 2017-09-23 20:22
en_US.utf8: 2017-09-23 20:22
en_ZA.utf8: 2017-09-23 20:22
en_ZM : 2017-09-23 20:22
en_ZM.utf8: 2017-09-23 20:22
en_ZW.utf8: 2017-09-23 20:22
it_IT.utf8: 2017-09-23 20:22
POSIX : Sep 23 20:22
我将在这里留下我的其他解决方案以供参考:
who -b | awk '{print $(NF-1)" "$NF}' >> file.txt
将打印最后两列(空格分隔)的命令输出,适用于像您这样的区域设置(根据您问题中的示例)。
对于英文输出你需要最后三列:
who -b | awk '{print $(NF-2)" "$(NF-1)" "$(NF)}' >> file.txt
答案2
给你:who -b | cut -c23-40
,还有who -b | cut -d' ' -f13,14
这是我在两种情况下得到的输出2017-10-11 07:55
。