shell - 将矩阵写入 shell 中的一列或使用 awk
问题描述
我有一个矩阵:
input.txt
1 2 3
2 3 5
2 3 4
~
我想写在一栏中
output.txt
1
2
2
2
3
3
3
5
4
我可以用下面的脚本做到这一点
#!/bin/sh
pr -ts" " --columns 3 input.txt > output.txt
awk '
{
for (i=1; i<=NF; i++) {
a[NR,i] = $i
}
}
NF>p { p = NF }
END {
for(j=1; j<=p; j++) {
str=a[1,j]
for(i=2; i<=NR; i++){
str=str" "a[i,j];
}
print str
}
}' output.txt
但我正在寻找一种有效的方法来处理具有 n 列的矩阵。
该脚本pr -ts" " --columns 50 input.txt > output.txt
也不适用于较大的列大小。我将它与 50 列大小一起使用并得到以下错误
pr: page width too narrow
解决方案
这是你想要做的吗?
$ cat tst.awk
{
for (i=1; i<=NF; i++) {
vals[i] = vals[i] $i ORS
}
}
END {
for (i=1; i<=NF; i++) {
printf "%s", vals[i]
}
}
$ awk -f tst.awk file
1
2
2
2
3
3
3
5
4
推荐阅读
- redux - Redux Thunk - 级联调度调用
- flutter - 如何在 Flutter 中显示从 Firestore 获取的数据?
- discord.py - 当用户加入特定语音频道时,如何制作一个在特定频道中发送嵌入消息的 discord.py 机器人
- android - Android 安装其他应用程序的权限
- visual-studio-code - 在 VScode 中使用 GDB 将 watch 变量的格式设置为十六进制
- c++ - C ++中网络之间的套接字
- spring - 在春季批处理写入器中写入多个不相关的表
- android - Flutter 社交分享插件(facebook / instagram)不起作用
- ruby-on-rails - 使用未确认的帐户登录时,覆盖设计会话控制器以触发“确认您的电子邮件”电子邮件
- c - 如何在不影响性能的情况下实现原始类型的类型安全?