常用Linux命令

查找并显示在第几行

1
awk '/要匹配字符串/{print NR}' 文件名

打印文件指定行:

1
2
3
awk 'NR==123105 || NR==123106 {print; exit}' test.txt

awk '{if(NR<=123108 && NR>=123105) print $0}' test.txt

提取文件中的指定列:

1
cut -f1 tidx_sorted.txt > tidx_sorted2.txt

全匹配:

1
cat inverted_tidx_0.txt | grep -w "term:一" > tmp1.txt

只打印某些行:

1
awk -F"[" '{for(i=1;i<=25;i++) print $i}' tmp1.txt > tmp1_s.txt

打印匹配到的行号:

1
grep -n "v0677v2cgq5" one2.txt 

按照分隔符分割,只取第一列:

1
awk -F'\t' '{print $1}' tidx/1/doc_id.data > tidx_docid_1.txt

去掉某列

1
awk ' { $5=null;print $0 }'

去掉最后一列

1
awk '{for(i = 1; i < NF; i++) printf("%s ", $i); printf("\n")}' a.txt

找出文件new有,但文件old没有的数据

1
awk 'NR==FNR{a[$0]=1}NR>FNR{if(a[$0]!=1)print}' old.txt new.txt > black.txt

忽略checkup字段

1
awk '{ gsub(/checkup_time_normalized:1,|checkup_time_normalized:2,|checkup_time_normalized:3,|checkup_time_normalized:4,/,""); print $0 }' res_0_tight.txt > res_tight.txt 

过滤某列等于特定值的行

1
2
awk '{if($1!="regist") print $0}' term_len_all.txt > term_len_all_new.txt
awk -F'\t' '{if($6!="0.000000") print $0}' data.txt > new_data.txt

统计行数

1
awk 'END{print NR}'

统计所有文件夹下所有文件行数

1
awk 'END{print NR}' */*

第一列累加

1
awk '{sum +=$1};END {print sum}' xxx

删除某些行

1
sed -i '1,20d' inverted_len.txt 

每x行分割文件

1
split -l 500000 sorted_inverted_tight.txt

忽略字符集,按照ASCII码排序;指定主内存缓存大小为80%;并行数为6;使用指定目录而非/tmp作为排序时的临时目录

1
LC_ALL=C sort  forward_tidx.txt -S 80% --parallel=6 -T /data/tmp/sort > forward_tidx_sorted.txt

在当前目录下递归查找文件内容

1
grep -n -ri "技术" ./

常用Linux命令
http://yunan.xyz/2022/06/07/常用Linux命令/
作者
yunan
发布于
2022年6月7日
许可协议