提问者:小点点

删除第一行,用给定数据替换第一列数据


我有目录名称,如folder1、folder2、folder3…… folder10。每个目录内都有许多不同名称的文本文件。每个文本文件顶部都包含一个文本行和两列数据,如下所示

  data_example1          textfile_1000_manygthe>written                        
                          20.0         0.53
                          30.0         2.56
                          40.0         2.26
                          45.59        1.28
                          50.24        1.95
                          
 data_example2          textfile_1002_man_gth<>writ
                         10.0          1.28    
                         45.0          2.58
                         48.0          1.58
                         12.0          2.69
                         69.0          1.59
                

然后我想做的是==首先我想完全删除目录中存在的所有文本文件的第一行folder1, folder2,folder3……folder10.之后,无论目录中存在的每个文本文件的第一列中的值是什么,我想用其他值替换第一列值,这些值保存在单独的一个名为"replace_first_column.txt"的文本文件中,replace_first_column.txt文件的内容如下所示,最后想将所有文件保存在相同目录中的原始名称中。

                   10.0
                   20.0
                   30.0
                   40.0
                   50.0
                   

我尝试了下面的代码:但它不起作用。希望我能得到一些解决方案。谢谢。

   #!/bin/sh
   for file in folder1,folder2....folder10
   do
   sed -1 $files
   done
    for file in folder1,folder2....folder10
    do
    replace    ##i dont know here replace first column

共1个答案

匿名用户

像这样的东西应该使用bash(for{1…10})、GNU find(for在最后)和GNU awk(for-i inplace)来完成:

#!/usr/bin/env bash
find folder{1..10} -type f -exec gawk -i inplace '
    { print FILENAME, $0 | "cat>&2" }     # for tracing, see comments
    NR==FNR { a[NR+1]=$1; print; next }
    FNR>1 { $1=a[FNR]; print }
' /wherever/replace_first_column.txt {} +