【问题标题】:Deleting the first row and replacing the first column data with the given data删除第一行并用给定数据替换第一列数据
【发布时间】:2021-01-10 14:37:36
【问题描述】:

我有文件夹名称,如文件夹 1、文件夹 2、文件夹 3....文件夹 10。在每个目录中都有许多不同名称的文本文件。每个文本文件在顶部包含一个文本行和两列数据,如下所示

  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

【问题讨论】:

    标签: linux shell for-loop awk sed


    【解决方案1】:

    这样的事情应该使用 bash({1..10})、GNU find(+ 结尾)和 GNU awk(-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 {} +
    

    【讨论】:

    • 好的...它工作正常。你是如何成为这么多专家的,你能和我分享一些技巧吗……我是脚本新手……
    • 感谢您的称赞,但我已经在 Unix 中编程了大约 40 年,而且我不是专家,我只知道如何正确使用这些工具来实现最基本的目的。只需在此处和 stackexchange.com 上继续提问,阅读其他人的问题+答案,不要假设产生预期输出的任何答案都是好的答案——这是确定好的答案的起点,而不是终点.请阅读mywiki.wooledge.org/BashFAQ 的常见问题解答,忽略tldp.org 的所有内容,并获取 Arnold Robbins 所著的《Effective AWK Programming, 5th Edition》一书
    猜你喜欢
    • 1970-01-01
    • 2022-06-13
    • 2014-01-25
    • 1970-01-01
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多