强烈推荐:sort linux 命令 在线中文手册
目录
目录
6.3 查找某路径下,包含特定字符的文件,并以文件名的某个字段排序
1. 查看某个文件中特定字符串的个数
查看的特定字符为“刘大耳”, 查看的文件为 cut_result.txt
grep -o "刘大耳" cut_result.txt | wc -l
2. 查看一个文件共有多少行
(1) cat corpus | wc -l
(2) wc -l corpus
(3) 同时查看两个文件共有多少行
wc -l corpus1 corpus2
3. 查看一个文件夹共有多少个文件
ls data | wc -l
4.选取test1的某几行数据存入到test2中
(1) 将test1的前10行数据存入到test2中
awk '{print $1, $2, $3, $4, $5, $6, $7, $8, $9, $10}' test.txt > test1.txt
(2)Q: 是不是可以直接选第1列到第10列,不用枚举?
5. 在命令行中计算
245100 / 3066= ?
echo $[245100 / 3066]
6. 排序
6.1 查看最后一列,并将最后一列按照从大到小的顺序排序
cat a9a | awk ‘ {print $NF}’ | sort -nr | head
其中 sort -nr, -n 依照数值大小排序 -r 以相反的顺序排序(由大到小排序)
6.2 对auc.raw的第二列进行排序
cat auc.raw | sort -t$'\t' -k2g
6.3 查找某路径下,包含特定字符的文件,并以文件名的某个字段排序
文件目录
logs
-- 20221101-app-3-log.log
-- 20221101-app-2-log.log
-- 20221101-app-1-log.log
find logs -name *app.log | sort -t$'-' -k3g
输出
logs/20221101-app-1-log.log
logs/20221101-app-2-log.log
logs/20221101-app-3-log.log
写成sh文件,和直接在命令行写有一些不同,如下
# bin/bash
files = $(find logs -name *app.log | sort -t$'-' -k3g)
for filename in $files:
do
echo $filename
# 可以对文件做一些其它操作
done
7. 取出最后一列
head P.txt | awk -F'[\]]' '{print $1}' | awk '{print $2}'
8. 文件合并
8.1 将T.txt 和 P.txt 粘在一起
paste T.txt P_2.txt
8.2 将多个文件合并到一个文件
cat *.sql > merge.sql
9. 对auc.raw的第二列进行排序
cat auc.raw | sort -t$'\t' -k2g
10. 文件去重
sort -u 文件名
cat 文件名 | sort -u
11. 文件筛选
文本内容
lan-an001 1
lsd-sa00 2
0000 1
1111 0
11.1 筛选包含“lan”的行
grep lan test.txt
匹配到
lan-an001 1
11.2 根据正则,筛选出符合条件的行
grep -E "^[a-z]+-[a-z]+/d+" test.txt
匹配到
lan-an001 1
lsd-sa00 2
11.3 筛选出某一列为指定值的行
比如,筛选第二列为0的行
awk -F'\t' '{if($2==0) print $0}' data.txt > new_data.txt
其中,-F'\t' 表示以 ‘\t’为分割符
12. 存文件
如果文件不存在,则创建新文件,如果文件存在,则覆盖原始文件:>
将内容追加到已经存在的文件:>>
13. 按M查看文件的大小
ls -lh