Linux shell——打印某一列非空的行

问题描述:

有如下图格式的文件,其中内容是AND门,每一行的列数不同,代表不同的输入数,即AND2,AND3等,第一列是AND门的输出,我想将同一类型即列数相同的行提取出来,输出到一个新的文件中。
在这里插入图片描述

思路如下:

假如某一行有4列内容,那么这一行的第四列非空,而第五列一定是空的。
某一列是否为空可以转化为求字符串的长度问题,如果这一列非空,那么长度大于等于1,否则长度为0。

代码:
#############################
# AND > AND4  #提取4输入AND门
##############################
awk '{if(length($5)>1 && length($6) == 0) print NR}' AND > loc #打印第5列非空而第6列为空的行号
loc=($(awk '{print $1}' loc))
num=${#loc[@]}
cat /dev/null>AND4
for ((i=0;i<$num;i++))
do
sed -n "${loc[$i]}p" AND >> AND4   #筛选非空的行
done

##### 按照新的格式输出
ANDo=($(awk '{print $1}'  AND4))
ANDi1=($(awk '{print $2}'  AND4))
ANDi2=($(awk '{print $3}'  AND4))
ANDi3=($(awk '{print $4}'  AND4))
ANDi4=($(awk '{print $5}'  AND4))
num=${#ANDo[@]}
cat /dev/null>AND4.txt
for ((i=0;i<$num;i++))
do
str0=${ANDo[$i]}
str1=${ANDi1[$i]}
str2=${ANDi2[$i]}
str3=${ANDi3[$i]}
str4=${ANDi4[$i]}
echo "AND4V1_V50 AND4_$i($str0,$str1,$str2,$str3,$str4);" >> AND4.txt
done
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值