关于shell文本处理

最近用做了一些处理文本的工作,发现shell真的比较方便,总结了一些小代码。

  • 统计子目录下多个文件夹的行数
for x in *.txt;do cat $x | wc -l; done

如果仅需要对单独文本 cat filename | wc -l (会少一行,如果文件最后没有换行符)即可

  • 删除目录下所有文件的最后一行换行符,生成新的文件
for x in *.txt;do  cat $x | perl -pe 'chomp if eof'  >> ../new/$x; done
  • 删除文件内每一行的最后一个内容
    mac下vim filename 进入,1,$s/.$// ,wq 保存即可(会多出换行符)
  • 判断两个文本的每一行是否相同
diff filename1 filename2
  • shell脚本没有执行权限(Permission denied)
chmod +x xxx.sh
  • 删除某一行

234d表示删除第234行

sed -e '234d' filename >> newFile 
  • 把不同文件夹下名字相同的文件写到一起(合并两个文件)
    进入当前目录下
for x in *.txt; cat $x >> ../newfold/$x; done
  • 将目录下所有文件的特定行写入一个新的文件
    将所有文件的第1行的内容写入new.txt
for x in *;do
    num=0
    cat $x | while read line;do
        num=$(($num+1))

        if [[ $num == 1 ]]; then
            echo $x >> ../new.txt
        fi
    done
done
  • 将目录下行数不符合要求的文件找出来
    若文本不是4261行,移出这些文件
for x in *.txt;do
    num=`cat $x | wc -l`
    if [[ $num -ne 4261 ]]; then
        echo $num
        mv $x ../wrong/
    fi
done

如果以后用到更复杂的再更新吧。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值