#!/bin/bash #sudo apt install -y poppler-utils # 安装工具 #pdftotext input.pdf output.txt # 转换 为 txt 文件 sudo chmod 777 ./ ; sudo chmod 777 -R ./* file=gtmtoadc.txt CacheDir="./txt" AdcDir="./adc" catNR() { Nrlist=(`cat -n $file | grep "GTM_ADCTRIGiOUT" | awk -F" " '{print $1}'`) NameList=(`cat -n $file | grep "GTM_ADCTRIGiOUT" | awk -F" " '{print $2 $3}' | sed 's/[{}<>()=]/_/g' `) NrFinally=(`cat -n $file | grep "GTM to CAN/TTCAN Connections" | grep -vE "26-366|Overview" | awk -F" " '{print $1}'`) # file=gtmtoadc.txt ; cat -n $file | grep "GTM_ADCTRIGiOUT" | awk -F" " '{print $2 $3}' # file=gtmtoadc.txt ; cat -n $file | grep "GTM to CAN/TTCAN Connections" | grep -vE "26-366|Overview" | awk -F" " '{print $1}' } CatGrep() { # 检查文件是否存在 if [ ! -f "$file" ]; then echo "文件不存在: $file" exit 1 fi awk -v ReadHNR="$ReadHNR" -v ReadLNR="$ReadLNR" -v line_number="$FindNr" 'NR == line_number || (NR > line_number - ReadHNR && NR < line_number + ReadLNR)' "$file" | \ grep -vwE '^[0-9]|^[0-9][0-9]' | grep -vE "rw|SEL[0-9]" | sed "/^$/d " } CatFile() { FileCacheList=(`ls $CacheDir`) for((i=0;i<${#FileCacheList[*]};i++)) do file=$CacheDir/${FileCacheList[$i]} GTMname=`echo ${FileCacheList[$i]} | awk -F"." '{print $1}'` Nrlist=(` cat -n $file | grep SELx | awk -F" " '{print $1}'`) NrNameList=(` cat -n $file | grep SELx | awk -F" " '{print $2 $3}' | sed "s/ //g" | sed 's/[{}<>()=]/_/g' `) for((adc=0;adc<${#Nrlist[*]};adc++)) do FindNr=${Nrlist[$adc]} AdcId=${NrNameList[$adc]} if [ $adc = $[${#Nrlist[*]}-1] ] then nextNr=0 ReadLNR=300 else nextNr=${Nrlist[$adc+1]} ReadLNR=$[$nextNr-$FindNr] fi CatGrep > $AdcDir/$GTMname-$AdcId.txt AdcType=`cat $AdcDir/$GTMname-$AdcId.txt | grep channel | grep used | awk '{print $NF}'` cat $AdcDir/$GTMname-$AdcId.txt | grep -E "^[0-9]H|^[A-Z]H" > $AdcDir/set_$GTMname-$AdcId.txt # 重点: 过滤 匹配 行 0~9H 和 A~ZH , 不要进行删除,有跨行的数据 sudo rm -rf $AdcDir/$GTMname-$AdcId.txt sed -i "s/^/$GTMname-$AdcId-$AdcType---/g" $AdcDir/set_$GTMname-$AdcId.txt # sed 的单引号 不会解析变量 echo " file=$file GTMname=$GTMname AdcId=$AdcId AdcType=$AdcType FindNr=$FindNr nextNr=$nextNr " done done } # 问题: 需要解决 增加条件 ATOM 和 TOM FindTom() { ADCMaxFlag=0; fileList=(`ls $AdcDir`) read -p "请输出 需要触发的ADC的编号 和 TOMx 空格隔开, 为你匹配 TOMx_xx 案例 adc1 TOM3 写 1 TOM3 : " inputTOMBL inputTOMList=($inputTOMBL) # 变量需要转换为数组 FindAdcId=${inputTOMList[0]} TOMName=${inputTOMList[1]} AdcTypeGrepM="ADCx+8" AdcTypeGrepN="ADCx" echo "输入的信息为: $FindAdcId $TOMName " for i in ${fileList[*]} do file=$AdcDir/$i AdcNumberMin=(` echo $i | awk -F"_" '{print $8}' | awk -F"-" '{print $1}' | sed "s/ //g"`) AdcNumberMax=(` echo $i | awk -F"_" '{print $8}' | awk -F"-" '{print $2}' | sed "s/ //g"`) if [[ $FindAdcId > 7 ]] then FindAdcId=$[ FindAdcId - 7 ] ADCMaxFlag=1; #echo "[8] adc 编号 大于 7 " else if [[ $ADCMaxFlag < 1 ]] then ADCMaxFlag=0; #echo "[x] adc 编号 小于 7 " fi fi # echo "当前文件 $file 表示的 ADC 范围 最小数: ${AdcNumberMin[*]} 最大数: ${AdcNumberMax[*]} 当前输入触发: ADC $FindAdcId ADC 类型: $AdcTypeGrep TOM模块 : $TOMName" ; echo "" if [[ $FindAdcId -ge $AdcNumberMin && $FindAdcId -le $AdcNumberMax ]] then #echo "[ok] 文件中 $file 触发: ADC $FindAdcId ADC 类型: $AdcTypeGrep TOM模块 : $TOMName " #echo " 长度: $AdcTypeGrepLenght 查找到的内容如下: " if [[ $ADCMaxFlag < 1 ]] then cat $file | grep $TOMName | grep $AdcTypeGrepN | grep -v "$AdcTypeGrepM" else cat $file | grep $TOMName | grep $AdcTypeGrepM fi # break else echo "" #echo "当前 ADC ID : $FindAdcId ADC 类型: $AdcTypeGrep 不在当前文件中,继续往下查找 ..." fi done } main() { clear read -p "是否清空缓存重新整理文件,回车跳过 y/n: " ifdel if [[ ! -d $CacheDir && ! -d $AdcDir ]] then delFalg=1 echo "当前 缓存文件不存在,因此重新生成缓存..." else delFalg=0 fi if [[ $ifdel = y || $delFalg = 1 ]] then echo "[ok] delect and reset Cache file." sudo rm -rf $CacheDir $AdcDir sudo mkdir $CacheDir $AdcDir sudo chmod 777 $CacheDir $AdcDir else echo "[exit] not delect Cache file." fi catNR echo "所有的行号为: " ${Nrlist[*]} for((i=0;i<${#Nrlist[*]};i++)) do FindNr=${Nrlist[$i]} ReadHNR=1 if [ $i = $[${#Nrlist[*]}-1] ] then nextNr=0 ReadLNR=$[$NrFinally-$FindNr] echo "Can 结束 行号: $ReadLNR" ; else nextNr=${Nrlist[$i+1]} ReadLNR=$[$nextNr-$FindNr] fi echo "FindNr=$FindNr nextNr=$nextNr ReadLNR=$ReadLNR NameList=( ${NameList[*]} )" name=${NameList[$i]} echo "开始匹配行号: $FindNr" CatGrep > ./txt/$name.txt done CatFile FindTom } main
Powered by ddoss.cn 12.0
©2015 - 2025 ddoss
渝公网安备50011302222260号
渝ICP备2024035333号
【实验平台安全承诺书】
小绿叶技术社区,优化网络中,点击查看配置信息
主机监控系统【软著登字第15121829号】安全防火墙已开启检查cc攻击-下载文件完成后等待10s 恢复访问,检查连接数低于峰值恢复访问
您的IP:18.97.14.90,2025-04-20 02:01:29,Processed in 0.01487 second(s).