我有一个包含71行的.txt文件,还有另外12组文件(file1到file12)。我想将.txt文件中的前5行复制到特定行号上的file1,然后再将特定行号从.txt复制到file2,依此类推。
这是我目前的代码:
n = 1
sed -i '52,56d' $dumpfile
awk'{print $'"$n"',$'"$n+1"',$'"$n+2"',$'"$n+3"'}' sample.txt > $dumpfile
n=$(($n + 1))
在$dumpfile
我已经放了12个文件。
示例文件(12files; file1,file2 ...)
...........
................
..............
abc = 4,1,3
def = 1,2,6
dfg = 28,36,4
tyu = 68,47,6
rty = 65,6,97
file(sample.txt)
abc = 1,2,3
def = 4,5,6
dfg = 2,3,4
tyu = 8,7,6
rty = 5,6,7
abc = 21,2,32
def = 64,53,6
dfg = 28,3,4
tyu = 18,75,6
rty = 5,63,75
...........
...........
我想用五行sample.txt文件替换这五行(file1 ... file12)。在file1到file12中要替换的行数在所有12个文件中是相同的,其中在sample.txt文件中,第一组5行将进入file1,第二组5行将进入file2,依此类推至file12
答案 0 :(得分:0)
你需要的是这样的东西(使用GNU awk进行ARGIND和现场编辑):
awk -i inplace -v start=52 '
NR==FNR {new[NR]=$0; next}
FNR==start {print new[ARGIND-1]; c=5}
!(c&&c--)
' RS="" sample.txt RS='\n' file1 file2 ... file12
但是在你发布一些可测试的样本输入和相关输出之前,它只是一个猜测,显然是未经测试的。