批处理实现两文本同行交替输出-shell

xiaoxiao2021-02-28  55

练习1-批处理实现两文本同行交替输出

有两个文本如下(实际中并不知道两文本各有多少行):

1.txt

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa ccccccccccccccccccccccccccccccccccccccc eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee ggggggggggggggggggggggggggggggggggggggg wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

2.txt

hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn

要求用批处理输出如下(两文本交替输出)

aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa hhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhhh ccccccccccccccccccccccccccccccccccccccc iiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiiii eeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeeee jjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjjj ggggggggggggggggggggggggggggggggggggggg nnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnnn wwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwwww zzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzzz

编写代码

#! /bin/bash # # 输出文件的某一行 # 参数1:文件名 # 参数2:输出行数 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.如何交替输出文件

具体逻辑参考代码注释

参考文档

Vim使用技巧:http://www.runoob.com/linux/linux-vim.html 文件读取:http://www.cnblogs.com/iloveyoucc/archive/2012/07/10/2585529.html 循环:http://www.runoob.com/linux/linux-shell-process-control.html 统计文件行:http://www.cnblogs.com/fullhouse/archive/2011/07/17/2108786.html 输出文件第指定行技巧,如输出第三行:cat 1.txt | head -n3 | tail -1f 参考cat head tail命运使用 字符串长度为0 判断:http://blog.csdn.net/jk110333/article/details/42967089 Shell函数定义:http://www.runoob.com/linux/linux-shell-func.html

测试

文件一行数大于文件二文件一行数小于文件二文件一中有空白行文件一二均有空白行
转载请注明原文地址: https://www.6miu.com/read-36506.html

最新回复(0)