我正在尝试对我的日志进行排序,发现单个数字日期被错误地剪切。现在我想要么添加一个 0,要么删除额外的空间。
在此之前,我想看看如何获得我想要编辑的正确行。
最后 3 行的尾部:
$tail -3 testlog
Wed Feb 7 23:30:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
Wed Feb 7 23:40:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
Wed Feb 7 23:50:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
现在按照脚本的方式工作,我写了这个期望得到相同的结果:
$ while read line; do if [ $(echo $line|cut -c7) == "b" ]; then echo $line; fi; done < testlog | tail -3
Wed Feb 7 23:30:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
Wed Feb 7 23:40:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
Wed Feb 7 23:50:59 2018 daemon.info hostapd: wlan0: STA de:ad:be:ef:c0:fe WPA: group key handshake completed (RSN)
但是有了这个, 7 之前的额外空间被删除了。我没想到会发生这种情况。我不会用我的剧本剪掉它,是吗?
提前致谢!
对于任何其他双倍(或更多)空间,您都会注意到相同的情况。不带引号的变量扩展之后是单词拆分,因此一旦单词被空格(IFS)分割,它们之间就会重新组合一个空格。
一种解决方法可能是:
作为一个具体的例子,请参见:
相对:
值得一读:为什么我的 shell 脚本会因空格或其他特殊字符而窒息?