我有目录名称,如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
像这样的东西应该使用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 {} +