unix - 在 Unix 中粘贴具有不等行和多列的文件
问题描述
假设我有三个文件,内容如下:
文件1:
AAA BBB CCC
123 563 2467
文件2:
NA NA NA
文件3:
DDD EEE FFF
2333 236 908
123 376 887
我想粘贴这些文件并为空字段插入 0,如下所示:
AAA BBB CCC NA NA NA DDD EEE FFF
123 563 2467 0 0 0 2333 236 908
0 0 0 0 0 0 123 376 887
我什至无法通过粘贴的第一步。当我尝试paste file1 file2 file3
它变成这样:
AAA BBB CCC NA NA NA DDD EEE FFF
123 563 2467 2333 236 908
123 376 887
虽然我发现它pr -m -t file1 file2 file3
有效,但它不显示完整的字符串,因为我有一些长字符串。
在这种情况下如何让它工作?提前致谢。
解决方案
你可以使用 GNU awk (从这个答案修改。注意订购部分):
$ gawk '
BEGIN {
FS=OFS="\t" # set delimiters
}
{
for(i=1;i<=NF;i++) # iterate data fields
a[FNR][s+i]=$i # hash them
}
ENDFILE {
s+=NF # store field count
}
END {
for(i in a) { # in awk order
for(j=1;j<=s;j++) # and data
printf "%s%s",(a[i][j]==""?0:a[i][j]),(j==s?ORS:OFS) # output
}
}' file1 file2 file3
输出:
AAA BBB CCC NA NA NA DDD EEE FFF
123 563 2467 0 0 0 2333 236 908
0 0 0 0 0 0 123 376 887
推荐阅读
- java - Thymeleaf th:th:each 内的字段不工作
- java - Android Studio 中的货币格式
- c# - 如何在我的客户端-服务器多人游戏中添加改装系统
- java - 什么是不是实例的对象,反之亦然?
- javascript - keyup 事件监听器无法正常工作
- python - Apache 服务器未呈现 django 应用程序,但“此站点无法提供安全连接”
- algorithm - 串行算法和并行算法有什么区别?
- javascript - timepicker 选择一些问题的日期格式
- nginx - 如何在 nginx 上配置 cors?
- c# - 使用 SimpleHtml5Sanitizer C# 清理 JSON 后 JSON 不正确