首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何使用awk将带空格的列转换为多行

如何使用awk将带空格的列转换为多行
EN

Stack Overflow用户
提问于 2022-01-26 10:12:28
回答 1查看 94关注 0票数 0

我有一个有几个列的数据文件,在几个数据点之后有空白。我希望将第一列转换为多行(将空格后的列转换为行)。

例如,数据文件A.dat

代码语言:javascript
运行
复制
    2    1  
   11    1  
   15    2  
   24    2  

    3    1  
   12    1  
   16    2  
   25    2  

    4    1  
   13    1  
   17    2  
   26    2  

使用以下命令,我能够将第一列转换为行

代码语言:javascript
运行
复制
awk '{print $1}' A.dat | awk 'BEGIN { ORS = " " } { print }'

这是上面命令的输出。

代码语言:javascript
运行
复制
2 11 15 24  3 12 16 25  4 13 17 26

需求

我想要这样的输出

代码语言:javascript
运行
复制
this is row: 2 11 15 24  
this is row: 3 12 16 25  
this is row: 4 13 17 26

是否可以使用awk或任何其他方式将列转换为前面带有"this Is row“的行。我对其他方法知之甚少。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-01-26 10:30:44

这可能就是你想要做的:

代码语言:javascript
运行
复制
awk '
    NF        { row = row " " $1; next }
    row != "" { print "this is row:" row; row="" }
    END       { if (row != "") print "this is row:" row }
' A.dat

这假定空行完成行,而非空白行启动新行。

或者,使用sed

代码语言:javascript
运行
复制
sed -e 's/[[:blank:]]*\([^[:blank:]]*\).*/\1/' \
    -e '/./{;H;$!d;}'                          \
    -e 'x;/^$/d;y/\n/ /;s/^/this is row:/'     \
A.dat
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70861784

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档