awk - 具有 awk-last line 问题的行到列
问题描述
我有几个文件夹,每个文件夹都包含一个文本文件,我将在 Bash 中转置(将行转换为列)。我已经在 for 循环中使用 awk 进行了设置,但是我对最后一行有疑问,该行从未正确转置。
这是我的 input.txt
ID1 11208 13391 16070 19383
ID2 6691 8489 8723 7493
ID3 5768 6004 7754 7614
这是我的 output.txt 错误。
ID1 ID2 ID3
11208 6691 5768
13391 8489 6004
16070 8723 7754
19383
7493
7614
这就是我要的
ID1 ID2 ID3
11208 6691 5768
13391 8489 6004
16070 8723 7754
19383 7493 7614
我的 awk 一个班轮是:
input.txt | awk '{for(i=1; i<=NF; i++) A[i]=A[i] (NR>1?OFS:x) $i} END{for(i=1; i<=NR; i++) print A[i]}' OFS="\t" > output.txt
提前感谢大家的时间
解决方案
以下awk
可能会对您有所帮助。
awk '
!a[$1]++{
val=val?val OFS $1:$1}
{
for(i=2;i<=NF;i++){
b[FNR,i]=$i}
}
END{
print val;
for(j=2;j<=NF;j++){
for(k=1;k<=FNR;k++){
printf("%s%s",b[k,j],k==FNR?ORS:OFS)}
}}
' Input_file
编辑:感谢@jas 在这里指出这一点:
@OP:如果您有 DOS 结束行,请在此处检查:
cat -v Input_file
如果您看到控制 M 字符,请执行以下操作以删除它们。
tr -d '\r' < Input_file > temp_file && mv temp_file Input_file
推荐阅读
- c++ - ROS catkin build - 找不到共享库
- julia - 列出可在 Julia 版本 1.0 中下载/安装的软件包
- python - 检查列值是否在范围内
- python - 从 Python 3 控制 Arduino 继电器
- angularjs - 如何在 $stateProvider.state 上创建我自己的属性
- python - 如何从 div 标签中获取文本
- javascript - 未捕获的 ReferenceError:未使用 React 和 babel 定义模块
- sapui5 - 如何正确使用新的异步片段加载
- r - dnorm() 如何在 sapply 循环中处理分位数向量
- c# - 复制到另一个文本文件时如何覆盖或跳过特定行