awk – 在没有标题和第一列的csv文件中对行进行排序
发布时间:2020-12-14 02:14:40 所属栏目:Linux 来源:网络整理
导读:我有一个包含如下记录的CSV文件. id,h1,h2,h3,h4,h5,h6,h7 101,zebra,1,papa,4,dog,3,apple 102,2,yahoo,5,kangaroo,7,ape 我想在没有标题和第一列的情况下将行排序到此文件中.我的输出应该是这样的. id,h7 101,apple,zebra 102,ape,yahoo 我尝试了以下AWK,
我有一个包含如下记录的CSV文件.
id,h1,h2,h3,h4,h5,h6,h7 101,zebra,1,papa,4,dog,3,apple 102,2,yahoo,5,kangaroo,7,ape 我想在没有标题和第一列的情况下将行排序到此文件中.我的输出应该是这样的. id,h7 101,apple,zebra 102,ape,yahoo 我尝试了以下AWK,但不知道如何排除标题和第一列. awk -F"," ' { s="" for(i=1; i<=NF; i++) { a[i]=$i; } for(i=1; i<=NF; i++) { for(j = i+1; j<=NF; j++) { if (a[i] >= a[j]) { temp = a[j]; a[j] = a[i]; a[i] = temp; } } } for(i=1; i<=NF; i++){ s = s","a[i]; } print s } ' file 谢谢 解决方法
如果perl没问题:
$perl -F,-lane 'print join ",",$.==1 ? @F : ($F[0],sort @F[1..$#F])' ip.txt id,h7 101,zebra 102,yahoo > -F,表示作为字段分隔符,结果保存在@F数组中 >有关其他选项的详细信息,请参阅https://perldoc.perl.org/perlrun.html#Command-Switches > join“,”使用,作为输出字段分隔符 > ..是范围运算符,$#F将给出最后一个字段的索引 对于给定的标题,排序第一行也会起作用,因此这可以简化所需的逻辑 $perl -F,$F[0],sort @F[1..$#F]' ip.txt id,yahoo $ruby -F,-lane 'print [$F[0],$F.drop(1).sort] * ","' ip.txt id,yahoo (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- linux – 登录时如何让GNU屏幕自动启动?
- Linux C编程:如何获取设备的分区信息?
- linux – 如果我允许从localhost到iptables的所有连接,它是
- linux – 无法在Ubuntu上启动Visual Studio代码
- Nginx之动静分离 nginx反向代理和tomcat集群(适
- linux – apcupsd slave客户端不断丢失并恢复与UPS主站的通
- linux卸载mysql误删mysql.pm
- linux – Qt Creator CONFIG(调试,发布)开关不起作用
- linux – svn导出除了一些目录以外的所有目录
- linux – 为什么我无法在Ubuntu上ping端口443?