• 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
  • 相关阅读:
    <![CDATA[文本内容]]>
    Java对于表达式中的自动类型提升
    oracle循环语句
    Recastnavigation 创建 off-mesh link 的潜规则
    CritterAI 翻译 Configuration Parameters
    ndk-build 修改输出so位置 (change ndk-build output so lib file path )
    C# List<> Find相关接口学习
    C++ sizeof(struct) 的注意
    Unity使用Resources读取Resources路径下的二进制文件(Binary Data)必须使用 .bytes扩展名
    C++ ifstream ofstream 注意事项
  • 原文地址:https://www.cnblogs.com/guge-94/p/11540261.html
Copyright © 2020-2023  润新知