如何将数据对齐到相对于给定单词的漂亮列中?
例如,我有route -n
命令的输出:
default via 172.20.99.254 dev eth0
87.33.17.71 dev tun0 scope link
89.223.15.12 via 172.20.99.254 dev eth0 src 172.20.99.74
172.20.9.0/24 dev eth0 proto kernel scope link src 172.20.99.74
65.46.5.89 dev tun0 scope link
192.168.11.0/24 dev tun0 scope link
45.211.111.7 dev tun0 scope link
我想通过 word 对齐它dev
,以便包含 word 的列dev
对齐:
default via 172.20.99.254 dev eth0
87.33.17.71 dev tun0 scope link
89.223.15.12 via 172.20.99.254 dev eth0 src 172.20.99.74
172.20.9.0/24 dev eth0 proto kernel scope link src 172.20.99.74
65.46.5.89 dev tun0 scope link
192.168.11.0/24 dev tun0 scope link
45.211.111.7 dev tun0 scope link
我不能天真地用制表符替换第一个空格字符,因为有时我需要 1 个制表符,有时我需要 3 个制表符。
我会使用一个我确定它在文件中不存在的字符,作为
column
命令的虚拟分隔符,例如:您还可以将
-o
(指定输出分隔符)与 一起使用column
,您可以尝试使用-o ""
或-o " "
来查看行为。此外,上面
sed
仅替换了第一次出现,并且使用了简单的匹配,也许您需要对其他情况进行更严格的匹配,例如匹配周围的空格。