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 :显示版本信息并退出

 

 

原文地址:https://www.cnblogs.com/hozhangel/p/8709165.html