我有一个动态输出。有时像这样:
F8:XX:94:XX:C2:XX 1 39% No ANY_NAME
A2:XX:34:XX:E8:XX 6 42% Yes ANY_OTHER_NAME
D1:XX:78:XX:A1:XX 6 24% No MORESTUFF
Run Code Online (Sandbox Code Playgroud)
或者像其他时候这样:
F8:XX:94:XX:C2:XX 1 433 39% No ANY NAME
A2:XX:34:XX:E8:XX 6 232 42% No ANY_OTHER_NAME
D1:XX:78:XX:A1:XX 6 112 22% Yes MORE STUFF
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,最后一列是我想要的,但它可以包含空格或不包含空格,并且列数是动态的。
我需要始终捕获最后一列的值,以防没有空格或有多个空格。有时,列号也是动态的,但我想要的数据始终位于最后一个有空格或没有空格的位置。此数据之前的列始终是“是”或“否”(不确定这是否有帮助)。
有没有办法用 awk 来做到这一点?这就是我实际拥有的:
myvar=$(echo "${line}" | awk '{print $NF}')
Run Code Online (Sandbox Code Playgroud)
但这样做只是获取空格后的最后一部分,而不是完整的数据。因此,只有当数据没有空格时,这才有效。
我想要的是始终获得最后的数据及其空格,以防包含它们。有什么帮助吗?
如果您确定您关心的数据永远不会有超过一个空格,那么请使用它作为字段分隔符。
awk -F '\t| {2,}' ...
Run Code Online (Sandbox Code Playgroud)