Linux下文件操作
批量重命名文件:
1) 有一批文件,以.bak结尾,现在想把这些.bak 统统去掉。
rename 's/\.bak$//' *.bak
2) 把所有文件名内含有大小字母的,修改为小写字母。
rename 'y/A-Z/a-z/' *
和sed的替换语法一样
输出开头包含energy的行数
grep -o '^Energy' cnews.train.txt | wc -l
输出开头包含energy的行在第几行,并显示内容:
grep -n '^Energy' cnews.train.txt
以分隔符分割文件每行并 取输出分隔符左边内容
awk -F ‘分隔符’ ‘{print $1}’
取两个文件的交集
cat file1 file2 | sort | uniq -d > file3
删除两个文件的交集
cat file1 file2 | sort | uniq -u > file3
取两个文件的并集
cat file1 file2 | sort | uniq > file3
去除一个文件中的重复行
sort file1 | uniq > file2 注:这里把重复的行统一为一行 sort file1 | uniq -u > file2 注:这里把所有重复的行全部删掉了,一行不留
参考链接:https://www.cnblogs.com/foundwant/p/6098666.html
shell 随机从文件中抽取若干行的实现方法
shuf -n5 main.txt sort -R main.txt | head -5 shuf 命令的选项: -e, --echo :将每个参数视为输入行 -i, --input-range=LO-HI :将LO 到HI 的每个数字视为输入行 -n, --head-count=行数 : 最多输出指定的行数 -o, --output=文件 :将结果输出到指定文件而非标准输出 --random-source=文件 :从指定文件获得随机比特 -z, --zero-terminated :以0 结束行而非新行 --help :显示此帮助信息并退出 --version :显示版本信息并退出