Text-Processing
如何使用 cut 來分隔多個空格?
我有這個輸入,它顯示在列中。我想得到這個樣本的最後一列:
[ 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