日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

有意思的记录-shell(持续更新)

發布時間:2023/12/9 编程问答 23 豆豆
生活随笔 收集整理的這篇文章主要介紹了 有意思的记录-shell(持续更新) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

1.統計重復行的個數

sort uid.txt | uniq -c

2.查看壓縮文件

cat *.gz | gunzip > 123

3.查看2個文件的交集、差集

comm用于比較兩個有序文件,默認第一列為第一個文件獨有的元素,第二列為第二個文件獨有的元素,第三列為共有元素,語法:comm 選項 參數

-1:不顯示在第一個文件出現的內容

-2:不顯示在第二個文件出現的內容

-3:不顯示同時在兩個文件中都出現的內容

comm <(sort 1.txt| uniq) <(sort 2.txt | uniq)

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.算數計算

expr/$(())只能用于整數的計算,浮點的計算可以使用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表示第幾天,可以用個循環,刪除以前的多少天記錄;nice/ionice用于命令降級,以免影響其他服務

查找文件,找到后并進行其他操作。格式為:

find path 參數 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命令的結果,用于輸入參數傳入下一命令;但是每個命令都要以\;結束

7.查看端口占用進程

netstat -anp | grep port lsof -i :port

a:顯示所有套接口;n:顯示網絡ip;p:顯示pid和進程名

查看占用端口port的進程

lsof -p pid | grep IPv4 lsof -i | grep pid

以上2條命令都用于查看進程pid打開的網絡連接

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" 根據執行命令查找進程是否存活,避免根據名字查找的不規范。-x整行匹配, ps -eo只顯示cmd

11.shell讀文件

k=1 while read line;doecho "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.txt game_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

將前面的參數列表,一行一行的傳給后面的命令 cat test.txt | xargs -i date -d @{} +"%Y-%m-%d %H:%M:%S" 把test.txt里每行的時間戳轉化為日期,-i 選項告訴 xargs 用每項的名稱替換 {},如果參數是在命令最后面的就不需要-i,如rm 查找某路徑下的文件內容 find . -name "*.xml" | xargs grep "hadoop.tmp.dir"

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循環

#1到10 for i in `seq 10` do done #靜態語言用法 for ((i=1; i<= 10; ++i)) do done #for in for i in {1..10} do done

19. 字符串比較

[ ] 是條件判斷,–eq/–ne/-gt/-ge/–lt/-le用于整數的比較,那浮點數和字符串的比較呢?、 #1.轉義的比較符 \< \> [ 'a' \< 'b' ] && echo 'ok' [ 'abc' \> 'a' ] && echo 'ok' #2.雙括號[[ ]] [[ 'a' < 'b' ]] && echo 'ok' [[ 'abc' > 'a' ]] && echo 'ok' [[ 3.5 < 7.6 ]] && echo 'ok' #字符串包含判斷,是否包含wo [[ 'hello word' =~ wo ]] && echo 'ok'

20.awk正則表達式

awk '$0 ~ /^[1-9]/' subject

打印以數字開頭的行

21.awk去重

$0做為下標,沒有出現的時候a[$0]為0,出現一次后就會+1

awk '{if(! a[$0]++){print $0}}'

轉載于:https://www.cnblogs.com/whuqin/archive/2012/08/23/4982037.html

總結

以上是生活随笔為你收集整理的有意思的记录-shell(持续更新)的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。