写脚本实现,可以用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/'
批量创建文件及改名
- 使用for循环在/oldboy目录下通过随机小写10个字母,批量创建10个html文件,名称例如为:cfedefaede_oldboy.html
- 请用至少两种方法实现,将以上文件名中的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