我有一个包含以下内容的txt文件:
Bitmap scaledBitmap = Bitmap.createScaledBitmap(bitmap, 128, 128, true);
并且基于第5列,我想使用AWK将所有值放在一列中。 “,”用于分隔数据。
结果将如下:
adf8261:21:09:07 BAT SYNTAX_fa TRUE 273e-9,218e-9,136e-9,82e-9,82e-9,27e-9,0
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 54e-9,27e-9,0
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9,27e-9,27e-9,0
答案 0 :(得分:1)
awk 解决方案:
awk -F'[[:space:]]+|,' '{ for(i=5;i<=NF;i++) print $1,$2,$3,$4,$i }' file
-F'[[:space:]]+|,'
- 将空格和逗号视为字段分隔符
for(i=5;i<=NF;i++)
- 迭代第5个字段的项目
输出:
adf8261:21:09:07 BAT SYNTAX_fa TRUE 273e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 218e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 136e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 82e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 82e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 27e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 0
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 54e-9
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 27e-9
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 0
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 0
答案 1 :(得分:1)
另一个使用split
的awk:
$ awk '{split($5,a,",");for(i in a) print $1,$2,$3,$4,a[i]}' file
adf8261:21:09:07 BAT SYNTAX_fa TRUE 82e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 82e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 27e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 0
adf8261:21:09:07 BAT SYNTAX_fa TRUE 273e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 218e-9
adf8261:21:09:07 BAT SYNTAX_fa TRUE 136e-9
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 54e-9
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 27e-9
qwe8261:21:09:10 BAT SYNTAX_fa TRUE 0
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 0
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
oiu8261:21:09:08 BAT SYNTAX_fa TRUE 27e-9
由于for(i in a)
,输出将按随机顺序排列。可以通过以下方式解决:
... n=split($5,a,","); for(i=1;i<=n;i++) print ...
答案 2 :(得分:0)
在这里尝试另外一种方法,我在考虑每行上你的Input_file中都存在字符串“TRUE”。
awk -F'TRUE[^0-9]*|,' '{for(i=2;i<=NF;i++){print $1,"TRUE",$i}}' Input_file
说明:只需将字段分隔符设置为字符串TRUE直到第一个数字开始或将逗号作为字段分隔符(因此两个字段分隔符仅按照Input_file工作)。然后我通过for循环遍历第2个字段的字段到字段总数。现在打印第一个字段以及字符串TRUE,然后打印字段的值。最后提到了Input_file。