zoukankan      html  css  js  c++  java
  • Shell考题中级篇

    写脚本实现,可以用shell、perl等。把文件b中有的,但是文件a中没有的所有行,保存为文件c,并统计c的行数。

    grep -v -x bbb -f aaa  > ccc && wc -l ccc

    有如下文本,请将其中的IP进行替换,如:1.1.1.1改成1.*.*.1

    a = "123.123.123.34, 124.23.34.32, 123,43,21,42"
    b = "12.34.32.45"
    c = "ip: 123.45.56.67"
    d = '{"ip":"45.54.67.34"}'
    sed -r 's/([0-9]+).([0-9]+).([0-9]+).([0-9]+)/1.*.*.4/g' file

    有如下文本,请打印的行包含a,也必须包含b,也必须包含c

    123bca
    456xac
    789cbd
    awk '/a/ && /b/ && /c/'

    批量创建文件及改名

    1. 使用for循环在/oldboy目录下通过随机小写10个字母,批量创建10个html文件,名称例如为:cfedefaede_oldboy.html
    2. 请用至少两种方法实现,将以上文件名中的oldboy全部改成oldgirl(用for循环实现),并且html改成大写
    #!/bin/bash
    [ -d /oldboy ] || mkdir -p /oldboy
    # 检测目录是否存在,若是不存在则手动创建
    
    for i in `seq 1 10`;
    # 创建相应的html文件
      do
        # name=$(echo $(date) | md5sum | tr -d '[0-9]|' | cut -c 1-10)
        # 本来我是想用上面这种方式来生成文件名的,但是用上面这种方法必须设置sleep,并未sleep的值不能小于1S
        name=$(echo $RANDOM | sha512sum | tr -d '[0-9]' | cut -c 1-10)
        touch /oldboy/${name}_oldboy.html
      done
    # 创建相应的html文件
    
    File=$(ls /oldboy | grep "[a-Z]+_oldboy.html")
    # 我参考老男孩的答案,发现他们是直接更改整个目录下面的文件,个人觉得还是过滤一下比较好。
    
    cd /oldboy
    
    # 方式1
    for file in $File;
      do
        mv $file `echo $file | sed -e "s/oldboy/oldgirl/" -e "s/html/HTML/"`
      done
    
    
    # 方式2
    for file2 in $File;
      do
        mv $file ${file/oldboy.html/oldgirl.HTML}
      done
    View Code
  • 相关阅读:
    数组中重复的数字-剑指Offer
    不用加减乘除做加法-剑指Offer
    扑克牌顺子-剑指Offer
    左旋转字符串-剑指Offer
    翻转单词顺序列-剑指Offer
    和为S的连续正数序列-剑指Offer
    和为S的两个数字-剑指Offer
    数组中只出现一次的数字-剑指Offer
    平衡二叉树-剑指Offer
    二叉树的深度-剑指Offer
  • 原文地址:https://www.cnblogs.com/guge-94/p/11540261.html
Copyright © 2011-2022 走看看