shell脚本实现读取一个文件中的内容来创建多个文件

channel-san文件内容如下,现在需要根据内容中的方括号[]来创建文件名,方括号[]以后行的内容为新建文件的内容。

[dvb-t/au-Adelaide]
T 177500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 184500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 191500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 219500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 226500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 564500000 7MHz 2/3 NONE QPSK 8k 1/8 NONE
[dvb-t/au-AdelaideFoothills]
T 711500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 732500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 760500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 781625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 795500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
[dvb-t/au-Ballarat]
T 592625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 613500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 620625000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 634625000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 655500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
[dvb-t/au-Bendigo]
T 205500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE
T 529500000 7MHz 2/3 NONE QAM64 8k 1/8 NONE
T 529500000 7MHz 3/4 NONE QAM64 8k 1/16 NONE

实现脚本s.sh如下,在linux系统中命令执行bash s.sh运行,s.sh和channel-san文件在相同目录下。

#!/bin/bash

fileName=""
format="dvb-s"
mkdir $format
while read -r line  #循环读取channel-scan中每一行存到line
do
    echo "line=$line "
    if [[ $line == *[* ]];
    then 
        fileName=$line
        fileName=${fileName/\[} #删除文件名中的字符[
        fileName=${fileName/\]} #删除文件名中的字符]
        echo "fileName=$fileName"
        if [[ $fileName == *$format* ]]; #判断文件名包含字符串dvb-s
        then
            echo "create $fileName "
            
            echo "#$fileName" >> $fileName #向文件中追加
        fi
    else
        if [[ $fileName == *$format* ]];
        then
            echo "append $line to $fileName"
            echo $line >> $fileName #向文件中追加读取到的行
        fi
    fi
done < channel-scan
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值
>