linux 有用的命令,linux有用命令(持续更新)
1.統(tǒng)計重復行的個數(shù)
如:uid.txt
aaa
bbb
bbb
aaa
sort uid.txt | uniq -c得到
2 aaa
2 bbb
2.查看壓縮文件
a.gz, b.gz, c.gz
cat *.gz | gunzip > 123
3.查看2個文件的交集、差集
comm用于比較兩個有序文件,默認第一列為第一個文件獨有的元素,第二列為第二個文件獨有的元素,第三列為共有元素,語法:comm 選項 參數(shù)
-1:不顯示在第一個文件出現(xiàn)的內容
-2:不顯示在第二個文件出現(xiàn)的內容
-3:不顯示同時在兩個文件中都出現(xiàn)的內容
comm
grep -F -f 1.txt 2.txt | sort | uniq兩者交集,-F以行為單位進行查找,-f指明1.txt內容為要查找的pattern。
grep -F -v -f 2.txt 1.txt | sort | uniq-v顯示查找不到的元素,即1.txt獨有的元素(1.txt-2.txt)
4.sed使用
替換一個目錄下所有文件中的某個pattern:
sed -i "s/pattern/newstr/g" `grep pattern -rl ./*`
將pattern替換為newstr
整行替換:
sed -i 's/^flag.*$/flag : 0/g' file_name
將以flag開頭的行替換為flag : 0
刪除特定行:
sed -i '/^列王的紛爭/d' test1刪除以列王的紛爭開頭的行
sed -n '2,$p' test.txt打印test.txt的第二行到最后一行,$意為最后一行。-n表示不打印編輯行,不帶n,每行會被打印2次。
5.算數(shù)計算
expr/$(())只能用于整數(shù)的計算,浮點的計算可以使用awk,bc
nn=`echo $linenum | awk '{print $1 * 0.01}'`
awk求列和:
awk -F"\t" 'BEGIN{total=0}{total+=$1}END{print total}'
6.find使用
find . -name '*.txt'
查找當前目錄下所有子目錄下txt類型的文件
nice -n 19 ionice -nr6 find buslog.* -type f -mtime +$i -delete -print >> days_rm_log.log 2>&1
刪除某些過期文件:mtime 表示最后修改時間,i表示第幾天,可以用個循環(huán),刪除以前的多少天記錄;nice/ionice用于命令降級,以免影響其他服務
查找文件,找到后并進行其他操作。格式為:
find path 參數(shù) pattern -exec 命令
find cache_log -name cache_log_*.log -exec rm -rf {} \;
find rotate_group_log -name rotate_group.log -exec mv {} rotate_group_log/rotate_group.log.$yesterday \;其中
{}是find命令的結果,用于輸入?yún)?shù)傳入下一命令;但是每個命令都要以
\;結束
7.查看端口占用進程
netstat -anp | grep port
lsof -i :port
a:顯示所有套接口;n:顯示網(wǎng)絡ip;p:顯示pid和進程名
查看占用端口port的進程
lsof -p pid | grep IPv4
lsof -i | grep pid以上2條命令都用于查看進程pid打開的網(wǎng)絡連接
8.進程間通信查看
ipcs(interprocess communication facilities status):展示共享內存(-m)、信號量(-s)、消息隊列信息(-q)
ipcrm(remove an XSI message queue, semaphore set, or shared memory segment identifier)
ipcrm [ -q msgid | -Q msgkey | -s semid | -S semkey | -m shmid | -M shmkey ]
10.查找某進程
ps -eo cmd | grep -x "bin/test"根據(jù)執(zhí)行命令查找進程是否存活,避免根據(jù)名字查找的不規(guī)范。-x整行匹配, ps -eo只顯示cmd
11.shell讀文件
k=1
while read line;do
echo "Line # $k: $line"
((k++))
done < $FILE
echo "Total number of lines in file: $k"
12.sort
sort -k3 -nr app_downinfo2015-06-02.txt > app_sort文件按空格分割,第三列按照降序排列
sort -t $'\t' -k2,2 down_0722_uniq分隔符指定為tab,按第二列排序
13.隨機抽取若干行
awk 'BEGIN{srand();while (n<500){num=int(rand()*30546)+1;if (!(num in a)) {a[num]=1;n++}}}NR in a' game_similar.txt > training_data.txtgame_similar.txt共30546行,從中隨機選擇500行
14.日期
日期轉換為時間戳
date +%s
date -d '2015-07-30 20:05:02' +%s分別獲得對應的時間戳1438257971、1438257902
時間戳轉化為日期,如下獲得2015-07-30 20:05:02
date -d @1438257902 +"%Y-%m-%d %H:%M:%S"
日期加減
#20150816
date -d '-30 days' +%Y%m%d
#20150914
date -d 'yesterday' +%Y%m%d
#20150914
date -d '-1 day' +%Y%m%d
#20150916
date -d '+1 day' +%Y%m%d
15.xargs 將前面的參數(shù)列表,一行一行的傳給后面的命令
cat test.txt | xargs -i date -d @{} +"%Y-%m-%d %H:%M:%S"把test.txt里每行的時間戳轉化為日期,-i 選項告訴 xargs 用每項的名稱替換 {},如果參數(shù)是在命令最后面的就不需要-i,如rm
16.awk獲取shell外部變量
a=300
awk -v b=$a 'BEGIN{print b}'
17.正則表達式提取
從log中提取versionCode字段
grep -Eo "versionCode=[0-9]+" msearchgame.log
18.shell for循環(huán)
#1到10
for i in `seq 10`
do
done
#靜態(tài)語言用法
for ((i=1; i<= 10; ++i))
do
done
#for in
for i in {1..10}
do
done
與50位技術專家面對面20年技術見證,附贈技術全景圖總結
以上是生活随笔為你收集整理的linux 有用的命令,linux有用命令(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: linux flush 保证 磁盘,li
- 下一篇: linux内存地址断点,开发一个 Lin