交替重复 批处理

实验批处理

Windows下批处理

脚本代码如下所示:

@echo off
set "n=-1"&set "flag=a"
:begin
set /a n+=1
if %n% equ 0 (set "m=") else (set "m=skip=%n%")
for /f "%m% delims=" %%i in (1.txt) do echo %%i&if defined flag goto next
set no=a
:next
for /f "%m% delims=" %%i in (2.txt) do echo %%i&goto begin
if not defined no set "flag="&goto begin
pause>nul

@echo off&setlocal enabledelayedexpansion
set "num=0"
for %%a in (1.txt 2.txt) do (
for /f "delims=" %%i in (%%a) do (
set /a n+=1
if !n! gtr !num! set "num=!n!"
set /p=%%i <nul>>temp.txt
)
echo.>>temp.txt&set "n=0"
)
:lp
set /a n+=1
for /f "tokens=%n%" %%i in (temp.txt) do echo %%i
if %n% neq %num% goto lp
del /q temp.txt&pause>nul

不同情况下的执行结果

  1. 正常

  2. 大文件

  3. 2文件空

  4. 都空

Linux Shell脚本

代码

#! /bin/bash

function printLine() {
pri=`cat $1 | head -n$2 | tail -1f`
#字符串长度是否为0,不为0输出
if [ -n "${pri}" ]
then
echo ${pri} 
fi
}

file1=./1.txt
file2=./2.txt


m=`cat ./${file1} | wc -l`
echo "第一个文件行数为:${m}"
n=`cat ./${file2} | wc -l`
echo "第二个文件行数为:${n}"


max=
min=
moreTxt=
if [ ${m} -gt ${n} ]
then
max=${m}
min=${n}
moreTxt="${file1}"
else
max=${m}
min=${n}
moreTxt="${file2}"
fi

echo "行数小为:${min}"
echo "行数大为:${max}"


i=1
while (( i <= ${min} ))
do
printLine ${file1} ${i}
printLine ${file2} ${i}

let i++
done


while (( i <= ${max} ))
do
printLine ${moreTxt} ${i}
let i++
done

不同情况下的执行结果

1.正常

2.大文件

3.2空

4.1与2均空

原文地址:https://www.cnblogs.com/waxxx/p/11847486.html