linux - 将列追加到另一个文本文件中

标签 linux bash for-loop awk

你好,我有一个包含 3 列的文本文件

2.0  44.8  789.3 
3.0  58.4  453.0
4.0  97.2 -489.1
5.2  35.3  458.6

我想从上面的文本文件中选择列,并想将所选列附加到另一个文本文件中。我要附加上述列的文件如下所示

> > > > 
    10.0    8.5
    20.0    8.5
    30.0    8.5
    40.0    8.5
> > > >
    10.0    8.0
    20.0    8.0
    30.0    8.0
    40.0    8.0
> > > >
    10.0    9.0
    20.0    9.0
    30.0    9.0
    40.0    9.0
> > > >

我的预期输出是

> > > > 
    10.0    8.5   2.0
    20.0    8.5   3.0
    30.0    8.5   4.0
    40.0    8.5   5.2
> > > >
    10.0    8.0   44.8
    20.0    8.0   58.4
    30.0    8.0   97.2
    40.0    8.0   35.3
> > > >
    10.0    9.0   789.3
    20.0    9.0   453.0
    30.0    9.0  -489.1
    40.0    9.0   458.6
> > > >

我尝试了脚本,但之后没有更多的想法,我需要专家的帮助。在此先感谢。

 #!/bin/sh
 for file in inp.txt
 do
 awk '{print $1}' > colone
 done

最佳答案

$ cat tst.awk
NR==FNR {
    for (numBlocks=1; numBlocks<=NF; numBlocks++) {
        vals[numBlocks,NR] = $numBlocks
    }
    next
}
/^>/ {
    blockNr++
    rowNr = 0
    print
    next
}
{ printf "%s %7s\n", $0, vals[blockNr,++rowNr] }

$ awk -f tst.awk file1 file2
> > > >
    10.0    8.5     2.0
    20.0    8.5     3.0
    30.0    8.5     4.0
    40.0    8.5     5.2
> > > >
    10.0    8.0    44.8
    20.0    8.0    58.4
    30.0    8.0    97.2
    40.0    8.0    35.3
> > > >
    10.0    9.0   789.3
    20.0    9.0   453.0
    30.0    9.0  -489.1
    40.0    9.0   458.6
> > > >

关于linux - 将列追加到另一个文本文件中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65023042/

相关文章:

linux - 如何使用curl检查文件是否下载

php - FOR 循环同时从 $_POST 抓取部分数据

ios - 根据位置删除图像的ScrollView

python 处理子进程

Linux Docker 和底层缓存、nscd、hosts

linux - 漂亮的 ascii 日志的 Bash 格式

bash - 访问数组元素时的性能注意事项

bash - 检测远程安装

linux - 在perl中连接linux命令内的变量

处理器的计算时间因执行而异,每次在 C 程序中使用 gettimeofday()