Text-Processing
在具有固定寬度列的文件中拆分行
如何從以
results.txt
這樣的行命名的文件中刪除虛擬資訊?文件裡面的行是這樣的:
_my0001_split00000000.txt:Total Dynamic Power = 0.0000 mW _my0001_split00000050.txt:Total Dynamic Power = 117.5261 uW (100%)
…並且它們應該更改為像這樣的製表符分隔格式:
0001 00000000 0.0000 mW 0001 00000050 117.5261 uW
使用
sed
而不是怎麼樣awk
?sed -r 's/^_my([0-9]+)_split([0-9]+)\.txt:[^=]*=\s*([0-9.]+) *(\S+).*/\1\t\2\t\3 \4/' /path/to/file
如果您有 GNU
awk
,那麼您確實可以指定固定的欄位寬度,例如gawk -vFIELDWIDTHS="3 4 6 8 30 8 1 3" -vOFS="\t" '{print $2,$4,$6,$8}' results.txt 0001 00000000 0.0000 mW 0001 00000050 117.5261 uW
但是,您也可以考慮基於正則表達式的解決方案 - 例如,
perl
您可以將前三個數值加上功率單位列印為:perl -lne 'print join "\t", (/\d*\.?\d+|\b.W\b/g)[0..3]' results.txt 0001 00000000 0.0000 mW 0001 00000050 117.5261 uW