如何用awk将整列的数据转换成多列

比如下面这个文件中的数据
[1]
23
56
89
[2]
78
76
65
[3]
56
34
41
[4]
19
16
67
·
·
·
转换成
[1] [2] [3] [4] ···
23 78 56 19 ···
56 76 34 16 ···
89 65 41 67 ···
因为数据文本里面的数据比较多,所以程序是可以处理大量数据的。

0

3个回答

假设你的文件很规律,每4行一个循环:

awk '
{
if (NR % 4 == 1) {arr[1]=arr[1]" "$1} 
else if (NR % 4 == 2) { arr[2]=arr[2]" "$1}
else if (NR % 4 == 3) {arr[3]=arr[3]" "$1}
else {arr[4]=arr[4]" "$1}
}
END{
printf ("%-s\n %-s\n %-s\n %-s\n",arr[1],arr[2],arr[3],arr[4])
}' a.txt | column  -t
[1]  [2]  [3]  [4]
23   78   56   19
56   76   34   16
89   65   41   67

用递归函数也可以,不过比较复杂一些

0
qq_39647357
qq_39647357 回复a905815661 老铁 直接发个完整点的吧 新人不会这操作
一年多之前 回复
a905815661
骏马金龙 回复qq_39647357: 那就用循环,从每个[N]开始,计数器+1,每个循环结束的时候计数器置为0。最后在END中通过遍历数组的方式来输出。
一年多之前 回复
a905815661
骏马金龙 回复qq_39647357: 那就用循环,从每个[N]开始,计数器+1,每个循环结束的时候计数器置为0。最后在END中通过遍历数组的方式来输出。
一年多之前 回复
qq_39647357
qq_39647357 抱歉啊可能是我没说清楚。文件是很规律,但是不仅仅局限于4行一个循环,这方面的需要怎么操作
一年多之前 回复
0
qq_39647357
qq_39647357 这个只能是少量的数据 列多了就不行了
一年多之前 回复
 awk '
BEGIN{OFS="\n"}
{
    if ( $1 ~ /\[/ ) {
        cnt=0
        arr[cnt]=arr[cnt]" "$1
    } else {
        cnt=cnt+1
        arr[cnt]=arr[cnt]" "$1
    }
}
END{for ( i in arr ) { print arr[i]}
}' a.txt | column -t 

适合每个[N]段落都是4行、5行、6行......一循环的情况

如果是一会4行、一会5行、一会6行的情况,我想awk实现起来会非常非常复杂。可以考虑用编程语言实现。

0
qq_39647357
qq_39647357 还是不可以啊 老铁 = = https://zhidao.baidu.com/question/1760366755251744948.html 我在尝试着改这个的输出方式 还没有成功
一年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
shell awk 多列求和
2016-04-12 14:05,5726,10085 n2016-04-12 14:41,14628,17341 n2016-04-12 14:42,19893,15488 n2016-04-12 14:42,19893,7852 n2016-04-12 14:43,20471,23041 n这是格式化输出 n n如果不加\n换行,会把把结果输出到一行,如下图nnpaste -d, a.txt ...
awk做列求和
日志格式:2018-05-16 11:29:23.999 [pool-1-thread-8] INFO  com.lsh.kafka.KafkaConsumerTest[KafkaConsumerTest.java:101] - Get data from kafka successfully. Datacount: 99命令:cat root.log | grep "11:29:23"| awk...
linux awk 按多列 去重 来统计数据之妙用
rn这是我日常工作统计日志用到的,现记录下:rn比如有这样一个日志:rn rn需要统计push,的点击数量,按cookie去重,因为一个设备可能点击多次rn rn第一步,先看看这几列,打印出来看看,rnawk -F "," '{print $2" "$3" "$6" "$7" "$9}' pushLog.logrn rn rn第二步,按上面的几列去重rnawk -F "," '!a[$2
利用shell中awk和xargs以及sed将多行多列文本中某一列合并成一行
一、问题描述nn最近需要利用Shell将多行多列文本中某一列,通过指定的分隔符合并成一行。假设需要处理的文本如下: n n我们主要处理的是,将用户名提取处理,合并成一行,并通过逗号进行分隔。最终的格式如下:nn“li1”,”huan”,”wang”,”wu”,”78c”,”zh”,”liu”,”zhao”,”xu”,”yang”nnnn二、解决方案nn首先是提取每一行的第X列,我最先能够想到的是a
awk实现多行合并
需求nn文件每一行有两列,需要将第一列相同的行合并。nnn 例如: n 111:aaa n 22:bbb n 22:ccc n 合并之后变为 n 111:aaa n 22:bbbcccnnn实现nn例如:文件名为test.txtnnnncat test.txt awk -F ':' '{a[$1]=a[$1]$2END{for(i in a) print i":" a[i]}}'nn...
notepad复制列
很简单,先按住alt键,然后鼠标选取复制的列就行了
mysql 固定多行转一列
图一nnn图二n本来想实现图一到图二的效果,通过下面这段代码可以实现nselect substring_index(group_concat(dt1),',', 1) dt1,substring_index(substring_index(group_concat(dt1),',', 2),',', -1)dt2,substring_index(group_concat(dt1),','
调试经验——在Excel中使用OFFSET函数将多行多列数据转换成单列数据(Transform data block to single column)
需求说明:需要将下表中C列的内容按逗号拆分成独立的单元格。首先想到的方法是使用Excel的分列功能(Textto Column),将C列拆分成多行多列,如下所示。剩下的问题就是:如何将这个分列后的数据块串联成一个单列数据?可使用Offset函数满足此需求。(在Excel中,OFFSET函数的功能为以指定的引用为参照系,通过给定偏移量得到新的引用。) 具体步骤:1.      观察到分列后有很多空的...
Pandas技巧:将一列分隔成多个列
项目中遇到一个问题,搜集的数据只有一列,每行的数据都是通过特殊字符分隔,现在需要将其分隔成多个列。n原始数据如下:n 0n0 155,NA,0,10,-99999,18,18,18,04,NA,0,-99999...n1 728,NA,24.1,74.81,-9999,18,18,18,-99999,...nn这是前两行的数据。原本使用特殊字符分隔的,这个好处理,只需通过string的repl...
awk将txt转换为csv
从mysql的表中导出来的txt数据格式:(mysql -e "select * from table_name;")nnn[admin@93a17e41-ee44-4c53-8432-b196632b8891 ~]$ head choushu.lognn1    13    56154    49817    ChargeMain_Shortcut    56154    0.33    130...
awk 分组求和
分组求和nnnnawk -F '|' '{s[$1] += $2} END{for(i in s) print i, s[i]} }' > test
SQL将一列多行数据转换为一行
select stuff((select ','+A.CarType from (select distinct CarType from #tempCarType) A FOR xml PATH('')), 1, 1, '') as CarType #tempCarType为表名,CarType为字段名
把数据转换成sql(awk实现)
把数据转换成sql语句,主要用户移植数据库的时候使用,或批量插入数据的时候使用rn方法如下(数据格式的分隔符为tab):rn1.用ultraedit编辑器最简单,只需简单的替换就行了,^t替换为',',^p替换为')^p,列模式下在每行的开始处输入insert .... (' .rn2.用脚本实现,如sed,awk等命令,在linxu下使用脚本前先使用dos2unix命令把数据的文本文件转换一下,...
Linux技巧--删除某列
1. 先指定替换需要删除的列n## 删除逗号分隔的文件test中的第二列ncat ./test | awk -F, '{$2=null;print $0}'nn2. 使用AWK的输出分隔符,进行替换分隔符nawk 'BEGIN{OFS=",";}{print $1,$2,$3,$4,$5,$6}' > ./test_2nn3. 总结ncat ./test | awk -F, '{$2=nul...
mysql更新整列数据
问题:表A 字段{a.id name}.表B 字段{id ,a.id, age}rn现需要把B表中的a.id 字段替换称A中的name   mysql实现如下:rnStep1:在表B中,新增字段namernalter table B add column name varchar(45)rn after a.id;rnStep2: 更新name,插入a.id对应的namernupdate A a,
awk按列合并示例
需求:将如下文本按第一列为主key,将相同的第二列值追加到同一行cat input.lognofB8Mt-5i_308H0LALOc-tsk1Aqg 2488nofB8Mt-5i_308H0LALOc-tsk1Aqg 2620nofB8Mt-j2usddmbu5_WrL3xitQ4o 2551nofB8Mt-j2usddmbu5_WrL3xitQ4o 2582nofB8Mt00DhYwMOpJvG...
awk 中字符串转数字
在awk中,将数字字符串转换成数字的方法:rnrn    id="1245";rn    当我们需要id是数字时,rn    id=id+0;
Pandas DataFrame将多列数据一次性从object转换为datetime
从CSV文件中读取数据后,很多日期类型数据为object。为了批量将这几列转换为datetime。怎么做呢?nn一、找出df的列名中有“date”日期的列nnndatel=[]nnfor x in df.columns.tolist():n if 'date' in x:n datel.append(x)nn二、用apply批量修改nnndf[datel]=df[datel]....
awk的用法二 ---内部的横排与竖排
使用awk来完成一些好玩的东西下面是一个awk打印一个等腰三角形的例子[root@dqysh020073 ~]# echo 1|awk '{for(i=1;i<=5;i++){for(k=5;k>i;k--)printf " ";for(j=2*i-1;j>1;j--)printf '1';print }}'延伸一:awk的横排[root@dqysh020073 ~]# echo...
SQLServer多行多列数据转为一行
SQLServer多行多列数据转为一行
awk将时间转换为毫秒
 nnawk将时间转换为毫秒:nn nnn#!/bin/bashnif [ $# -lt 1 ]; thenn echo "usage: $0 filename"n exit 1nfinngrep ":" ca_server.log | \n sed 's/\t/ /g' | \n awk -F' ' 'BEGIN{OFS=",";} {print $1,$3,$6}' |...
mysql 字符串转多列数据
创建函数 zoe_splitnnnnSET QUOTED_IDENTIFIER ONnSET ANSI_NULLS ONnGOnnCREATE FUNCTION [dbo].[zoe_split]n (n @c VARCHAR(8000) ,n @split VARCHAR(2)n )nRETURNS @t TABLE ( col VARCHAR(MAX) )
jQuery下拉多列插件
NULL 博文链接:https://wg84cn.iteye.com/blog/964861
如何用VFP把TXT转换成dbf
如何用VFP把TXT转换成dbf,如何用VFP把TXT转换成dbf,如何用VFP把TXT转换成dbf
linux_shell_awk 处理 文本文件 并导入excel
1、首先有一个文本文件,文件名为data.txt,文本内容如下: rnrnJim the wellsy n100 Pleasent Drive nSan Francisco,CA12345 nnBig Tony n200 Incognito AVE. nSuburbia,WA 6789 nnCousin Vinnie nVinnie's Auto Shop n300 City Alley nSo
awk 分组统计
awk分组统计,根据第二列值统计第四的个数rnrn# cat a.logrn1|aa|3|45|5|6|7|8|9|rn2|aa|3|44|5|6|7|8|9|rn3|aa|3|43|5|6|7|8|9|rn4|aa|3|44|5|6|7|8|9|rn5|bb|3|45|5|6|7|8|9|rn6|bb|3|4|5|6|7|8|9|rnrn# awk -F'|' '{if ($2=="aa"){c...
Excel将一列数据分隔成多列
在调用一个存储过程中,打印了输出结果,上面客户说要使用excel表。n输出的日志信息是有固定格式的数据,如下:n赖寿福 0 0 0 0 0 0n陈娟屏 25.78 13.25 17.42 14.09 10.06 80.6n赖建昌 0 0 0 0 0 0n刘菊英 0 0 0 0 0 0n刘桂娇 0 0 0 0 0 0n杨衍联 0 0 0 0 ...
pandas 多列判断转换成一列
nn nn如果熟悉sql,想要多列转换同时操作还可以试试 pandasql ,直接面向sql编程,缺点是有bug。
excel里面怎么将一列数据平均的分成多列
假设你说的一列是A列,B1单元格输入公式  =OFFSET($A$1,ROW(A1)-1+COLUMN(A1)*3-3,),其中,row函数返回给定引用的行号。下拉复制公式三行,再右拉复制公式多列,这样的效果就是三行多列的样式,如下图,(如果要四行多列则改公式中的两个3为4,公式下拉四行就行了,其他的样式照此方法更改)...
python之dataframe的行列转换(将多列转换成多行&将多行转换成多列)
1、将多列转换成多行nnnndata=pd.read_excel(path)nndata=data.set_index(['flag','region'])nndata=data.stack()nndata.index=data.index.rename('Time',level=2)nndata.name='ed_bw'nndata=data.reset_index()nnnn2、将多行转换成多...
oracle 列转行 多行数据转为一行
rn主key 有5个,【A    B    C    D   E   】rnrnrnrnrnselect STN_CD,replace(wm_concat(E),',','、') from T_G1_SHITEN_ORDERrnwherernA= '000' andrnB = 'C01' andrnC = 1 andrnD= 'K02'rngroup by A
linux 用awk gsub将一行变成多行
原数据rn103153926#1180545867#1337681140#1358188028#1445076068#1527059220#1625614569#1890561581#19584762#2214121812#2342720441#2500121842#25326345#2640225664#409811166#461094177#596719064#611522202#741345
Linux基础——awk替换
Linux基础知识,awk 分段功能介绍。
查询的时候将多行和并为一行的多列
问题描述:n 开发过程中往往查询出来的内容是多列,但是因为框架中的grid的原因需要将这多行设置为一行中的多列,思路是通过case when转换将多行转换为一行中的多列。n表结构和表结构如下:nnnnn统计各个类型的数量,将其放入echarts或grid中,一般的根据类型统计的SQL如下:nselect t.type,sum(1) num from test t group by
把一列的数据进行拼接
SELECT      t1.KNSITSYO_ID      , t2.knsitsyo_set_id      , array_to_string(         array (           SELECT distinct            t3.hokanbasyo_name           from            T_KNSITSYO_JOHOSSN t3    ...
awk 合并两个文件
NR,表示awk开始执行程序后所读取的数据行数.rnFNR,与NR功用类似,不同的是awk每打开一个新文件,FNR便从0重新累计.rn对于单个文件NR 和FNR 的 输出结果一样的 :rnrn$ cat fil1rnst cid namern1 111 wyrn2 222 xlxrn3 333 wwrn4 444 yyyrnrnrnrn$ cat file2rncid statusrn111 ar
2018-12-15 Excel快速选择一列多列所有数据
n n n n当Excel数据较多时候,需要选择一列的所有数据,拖动的话,会是个噩梦nn快速选择一列/多列的所有数据nn选中第一行数据,一列或多列nMac按住 command+shift+下箭头 ,Windows下 ctrl+shift+下箭头,会自动选择到数据的底部nn极度使用技巧nn n nn...
vba实现excel多行多列转多行一列
选中部分数据区域(多行多列),例如:nnnn转换之后:nnnnvba代码:nnnSub manyToOne()n Dim TheRng, TempArrn Dim i As Integer, j As Integer, elemCount As Longn On Error GoTo line1n Sheets("Sheet2").Range("a:a").ClearContent...
Linux中awk命令正确的求最大值、最小值、平均值、总和
awk默认按照字符串比较的,如果要比较数值,需要先强制类型转换,即 $1+0,转换成整数。nnnReference:n          http://xfeng.me/awk-get-max/n          http://www.ahlinux.com/shell/4072.htmlnn          http://www.bkjia.com/LINUXxt/956509
awk实现group by功能分组统计条数
log日志初始文件内容如下:'rnrn"2017-04-26 09:23:04","ac:c1:ee:3c:f9:63","http://www.wangfanwifi.com:16621/api/pageTime?uid=&hitID=bootstrap&browserID=2Cxz4MWqDSJDHJ5RliLg7QtfIpaxkt4h","192.168.10.29","1","2","未知
文章热词 机器学习教程 Objective-C培训 交互设计视频教程 颜色模型 设计制作学习
相关热词 mysql关联查询两次本表 native底部 react extjs glyph 图标 java如何用深度学习 如何用网页制作计时器视频