我有文件 1,其中包含:
AAAAAA
BBBBBB
我有文件 2,其中包含:
11111 22222 33333
和文件 3,其中包含:
22222 11111 33333
我想将文件 1 中的每一行插入到文件 2 和 3 中,替换 '11111' 并每次创建一个新文件。所以最终结果是4个文件:
文件 1:
AAAAAA2222233333
文件 2:
BBBBBB2222233333
文件 3:
22222AAAAAA33333
文件 4:
22222BBBBBB33333
我试图使用嵌套的 for 循环和 sed 来替换值,目前我有这个;但是,它不起作用:(目录/* 包含文件 2 和文件 3)
FILES=/directory/*
cat file1 | while read line ;do
for f in $FILES; do
cat $f | sed 's/11111/$i/g' > newfiles/$f$i.txt
done
done
每次我运行脚本时,可能需要编辑不同数量的文件,所以我想遍历目录以确保所有文件都被覆盖。文件 1 中也会有不同数量的字符串。
您需要遍历替换文件,然后循环目标文件。我想你快到了。我有类似以下的内容(我替换了一些文件名,以便 globbing 工作):
这里我们首先表明我们使用的是 bash 作为 shell。然后将计数器设置
i
为 1。接下来glob
将文件放入变量中。循环通过 file1 并将每一行分配给 variabler
。然后对于每个文件,11111
使用我们在该行中看到的任何内容子字符串。使用名称中的计数器将其输出到新文件,然后递增计数器。重复直到循环完成。奥克呢?将映射保存
file1
到关联数组中,然后为其他文件的每一行循环遍历数组:(
OFS=
and$1=$1
只是强制使用 en 空字段分隔符重新评估记录,以删除字段之间的空格)。结果:我已经使用下面的脚本来实现相同的
输出
请找到所有 4 个文件的输出
==