bash 文本读写 并 按照规则输出到新文件中

问题

  • 文件名 : uid.log
  • 读取文件内容 : uid:score|exp|sex|name (例如: 101:100|37|2|名字)
  • 请写一个脚本,遍历所有的日志,把所有exp>100的,并且sex=1的用户找出来,并记录到文件result.log中,记录格式: uid|exp|sex(例:101|190|1) ,每条记录一行。


    title.png

脚本

cat uid.log | while read line 
do
    echo $line | awk -F \| '{print $0,$1,$2,$3,$4}' | while read a b c d e
    do 
        if [ "$c" -gt "100" -a "$d" -ge "1" ]; then
            uid=`echo $b | awk -F : '{print $1}'`
            echo $uid'|'$c'|'$d >> result.log
        fi
    done
done
  • cat 读取文件

  • awk 分割字符串

  • echo "内容" >> 文件

  • awk 后跟的$0-4五个变量是因为$0是原记录行,分割前的数据,然后将变量分别读入a b c d e五个变量中(read a b c d e)

  • uid=echo $b | awk -F : '{print $1}' 中的单引号: 命令需要用`符号引用起来

  • 使用cat命令查看一下结果

cat uid.log
cat result.log
result.png
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • awk介绍awk变量printf命令:实现格式化输出操作符awk patternawk actionawk数组aw...
    哈喽别样阅读 1,759评论 0 4
  • awk:报告生成器,格式化文本输出 内容: awk介绍 awk基本用法 awk变量 awk格式化 awk操作符 a...
    BossHuang阅读 1,577评论 0 9
  • 转载 原文的排版和内容都更加友好,并且详细,我只是在这里贴出了一部分留作自己以后参考和学习,如希望更详细了解AWK...
    XKirk阅读 3,395评论 2 25
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 13,561评论 2 33
  • 选择了《高倍速阅读法》是因为家里刚好有朋友送了这本书。开始阅读习惯是先翻目录,后看序,最后是一行一行认真阅读...
    黄瑜111阅读 290评论 0 0

友情链接更多精彩内容