Text-Processing

如何使用 cut 來分隔多個空格?

  • December 15, 2021

我有這個輸入,它顯示在列中。我想得到這個樣本的最後一列:

[  3]  1.0- 2.0 sec  1.00 MBytes  8.39 Mbits/sec
[  3]  2.0- 3.0 sec   768 KBytes  6.29 Mbits/sec
[  3]  3.0- 4.0 sec   512 KBytes  4.19 Mbits/sec
[  3]  4.0- 5.0 sec   256 KBytes  2.10 Mbits/sec
...

如果我使用

cut -d\  -f 13

我明白了

Mbits/sec
6.29
4.19
2.10

因為有時中間有額外的空格。

如果我們使用tr命令和擠壓選項(-s標誌)將所有多個連續空格轉換為單個空格,然後cut以空格作為分隔符執行操作——我們可以訪問帶有數字的所需列:

tr -s ' ' file | cut -d ' ' -f 8

從字面上回答你的問題:

sed 's/   */:/g' | cut -d : -f 5

或者

awk -F '  +' '{print $5}'

但如果括號中的數字達到 10 等,則不會這樣做。如果您只對數字感興趣,則可以刪除其他所有內容。

sed 's/[^.0-9][^.0-9]*/:/g' | cut -d : -f 6

引用自:https://unix.stackexchange.com/questions/109835