VSB*_*VSB 2 text-processing columns text-formatting
如何从以这样results.txt
的行命名的文件中删除虚拟信息?
文件内的行是这样的:
_my0001_split00000000.txt:Total Dynamic Power = 0.0000 mW
_my0001_split00000050.txt:Total Dynamic Power = 117.5261 uW (100%)
Run Code Online (Sandbox Code Playgroud)
...它们应该更改为制表符分隔的格式,如下所示:
0001 00000000 0.0000 mW
0001 00000050 117.5261 uW
Run Code Online (Sandbox Code Playgroud)
使用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
Run Code Online (Sandbox Code Playgroud)
如果你有 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
Run Code Online (Sandbox Code Playgroud)
但是,您也可以考虑基于正则表达式的解决方案 - 例如,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
Run Code Online (Sandbox Code Playgroud)