我有以下的测试文件:将一个文件分成单独的基于行号
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
我想它在每个文件都包含以前的文件的第一行的最后一行的方式分开。例如:
file 1:
1
2
3
4
5
file2:
5
6
7
8
9
file3:
9
10
11
12
13
file4:
13
14
15
16
17
file5:
17
18
19
20
这将使4个文件包含5行和1个文件与4行。
作为第一步,我试着测试下面的命令,我只写了第一个包含前5行的文件。我不明白为什么在if
声明中的awk
命令,而不是打印第5行,它打印整个20?
d=$(wc test)
a=$(echo $d | cut -f1 -d " ")
lines=$(echo $a/5 | bc -l)
integer=$(echo $lines | cut -f1 -d ".")
for i in $(seq 1 $integer); do
start=$(echo $i*5 | bc -l)
var=$((var+=1))
echo start $start
echo $var
if [[ $var = 1 ]]; then
awk 'NR<=$start' test
fi
done
谢谢!
你试过'split'? – 123
@ 123我添加了一个解释这个的编辑。 – Homap
@Ed Morton对不起,感到困惑。我最初的目标是sthg else(现在在编辑版本中解释过),但我只想询问我的代码中的错误,所以我写了不同的问题。现在,我希望它更清楚。 – Homap