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

你可能感兴趣的:(bash 文本读写 并 按照规则输出到新文件中)