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

歡迎訪問(wèn) 生活随笔!

生活随笔

當(dāng)前位置: 首頁(yè) > 编程资源 > 编程问答 >内容正文

编程问答

Shell文件的排序、合并和分割

發(fā)布時(shí)間:2024/4/13 编程问答 15 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Shell文件的排序、合并和分割 小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

sort

sort [option] inputfile
選項(xiàng)及其意義:

optiondesc
-b忽略每行前面開(kāi)始出的空格字符;
-c檢查文件是否已經(jīng)按照順序排序;
-d排序時(shí),處理英文字母、數(shù)字及空格字符外,忽略其他的字符;
-f排序時(shí),將小寫(xiě)字母視為大寫(xiě)字母;
-i排序時(shí),除了040至176之間的ASCII字符外,忽略其他的字符;
-m將幾個(gè)排序號(hào)的文件進(jìn)行合并;
-M將前面3個(gè)字母依照月份的縮寫(xiě)進(jìn)行排序;
-n依照數(shù)值的大小排序;
-o<輸出文件>將排序后的結(jié)果存入制定的文件;
-r以相反的順序來(lái)排序;
-t<分隔字符>指定排序時(shí)所用的欄位分隔字符;默認(rèn)是空格符
+<起始欄位>-<結(jié)束欄位>以指定的欄位來(lái)排序,范圍由起始欄位到結(jié)束欄位的前一欄位。
-k\< num >指定排序域。1表示第一域,2表示第二域。
-u對(duì)結(jié)果進(jìn)行去重

e.g.
sort -t: -k3n inputfile

-k的使用
-k選項(xiàng)的語(yǔ)法格式:

FStart.CStart Modifie,FEnd.CEnd Modifier -------Start--------,-------End-------- FStart.CStart 選項(xiàng) , FEnd.CEnd 選項(xiàng)

這個(gè)語(yǔ)法格式可以被其中的逗號(hào),分為兩大部分,Start部分和End部分。Start部分也由三部分組成,其中的Modifier部分就是我們之前說(shuō)過(guò)的類似n和r的選項(xiàng)部分。我們重點(diǎn)說(shuō)說(shuō)Start部分的FStart和C.Start。C.Start也是可以省略的,省略的話就表示從本域的開(kāi)頭部分開(kāi)始。FStart.CStart,其中FStart就是表示使用的域而CStart則表示在FStart域中從第幾個(gè)字符開(kāi)始算“排序首字符”。同理,在End部分中,你可以設(shè)定FEnd.CEnd,如果你省略.CEnd,則表示結(jié)尾到“域尾”,即本域的最后一個(gè)字符。或者,如果你將CEnd設(shè)定為0(零),也是表示結(jié)尾到“域尾”。
e.g.

#從公司英文名稱的第二個(gè)字母開(kāi)始進(jìn)行排序 $ sort -t ' ' -k 1.2 facebook.txt baidu 100 5000 sohu 100 4500 google 110 5000 guge 50 3000#只針對(duì)公司英文名稱的第二個(gè)字母進(jìn)行排序,如果相同的按照員工工資進(jìn)行降序排序$ sort -t ' ' -k 1.2,1.2 -nrk 3,3 facebook.txt baidu 100 5000 google 110 5000 sohu 100 4500 guge 50 3000

uniq

uniq [option] inputfile
選項(xiàng)及其意義:

optiondesc
-c或——count在每列旁邊顯示該行重復(fù)出現(xiàn)的次數(shù);
-d或–repeated僅顯示重復(fù)出現(xiàn)的行列; 每個(gè)記錄僅顯示一次
-f<欄位>或–skip-fields=<欄位>忽略比較指定的欄位;
-s<字符位置>或–skip-chars=<字符位置>忽略比較指定的字符;
-u或——unique僅顯示出不重復(fù)的行列;
-w<字符位置>或–check-chars=<字符位置>指定要比較的字符。

e.g.

uniq 與 sort -u的區(qū)別

  • sort -u所有的重復(fù)行都會(huì)被去除。
  • uniq 去除的重復(fù)行必須是連續(xù)出現(xiàn)的。

join

join [option] file1 file2
選項(xiàng)及其意義:
option|desc
-|-
-a<1或2>:除了顯示原來(lái)的輸出內(nèi)容之外,還顯示指令文件中沒(méi)有相同欄位的行; 相當(dāng)于left join ,right join
-e<字符串>:若[文件1]與[文件2]中找不到指定的欄位,則在輸出中填入選項(xiàng)中的字符串;
-i或–ignore-case:比較欄位內(nèi)容時(shí),忽略大小寫(xiě)的差異;
-o<格式>:按照指定的格式來(lái)顯示結(jié)果;
-t<字符>:使用欄位的分割字符;
-v<1或2>:更-a相同,但是只顯示文件中沒(méi)有相同欄位的行;
-1<欄位>:連接[文件1]指定的欄位; -2<欄位>:連接[文件2]指定的欄位。


  • -a與-v的區(qū)別:
    -a顯示顯示匹配的記錄。-v不顯示匹配的記錄。
  • -o
    join默認(rèn)顯示2個(gè)文件中的所有域,-o用于改變顯示結(jié)果。
    bash
    #顯示2個(gè)文件的前2列
    join -t: -o1.1 1.2 2.1 2.2 file1
  • -1,-2
    join默認(rèn)指定2個(gè)文件的第一個(gè)域進(jìn)行join,-1,-2指定2個(gè)文件進(jìn)行join的域

cut

cut用于從標(biāo)準(zhǔn)輸入或文件中按域或行提取數(shù)據(jù)。
cut [option] file

選項(xiàng)及其意義:

optiondesc
-c指定提取的字符數(shù)或字符范圍
-f指定提取的域數(shù)或域范圍
-d改變域分割符

-c格式:

  • -cn :第n個(gè)字符
  • -cn,m :第n,m個(gè)字符
  • -cn-m :第n至m個(gè)字符
    -f格式與-c一樣

paste

paste將標(biāo)準(zhǔn)輸入或文件中的內(nèi)容粘貼到新的文件。多個(gè)文件按列對(duì)列進(jìn)行粘貼
paste [option] inputfile outfile
選項(xiàng)及其意義:

optiondesc
-s每個(gè)文件粘貼為一行,默認(rèn)按列粘貼
-從標(biāo)準(zhǔn)輸入中讀取文件
-d改變域分割符,默認(rèn)是空格或tab

e.g.

#每行顯示5個(gè)文件 ls | past -d“ ” - - - - -

split

用于切割文件
split [option] input output
選項(xiàng)及其意義:

optiondesc
-或-l用于指定文件切割的行數(shù)
-b用于文件切割的大小,單位字節(jié)
-C同-b,但切割時(shí)盡量保持每行的完整性
-d使用數(shù)字作為后綴
-a指定后綴長(zhǎng)度,-a 3,長(zhǎng)度為3

文件切割時(shí)默認(rèn)加上編號(hào),aa~zz,當(dāng)不指定小文件名字時(shí),默認(rèn)為x。

tr

tr實(shí)現(xiàn)字符轉(zhuǎn)換
tr [option] 字符串1 字符串2 輸入文件
選項(xiàng)及其意義:

optiondesc
-c選定字符串1中的補(bǔ)集,即反選字符串1中的補(bǔ)集
-d刪除字符串1中的所有字符
-s刪除所有重復(fù)出現(xiàn)的字符序列,只保存1個(gè)

e.g.

#刪除所有大寫(xiě)字母 tr -s A-Z file

tr支持部分正則表達(dá)式,例如A-Z 0-9 A*3,tr支持POSIX字符以及控制字符

標(biāo)記速記符含義八進(jìn)制方式
\aCtrl-G鈴聲\007
\bCtrl-H退格符\010
\fCtrl-L走行換頁(yè)\014
\nCtrl-J新行\012
\rCtrl-M回車\015
\tCtrl-Itab鍵\011
\vCtrl-X\030

注意這些控制字符,如果想在linux下輸入,如我們可能需要輸入^M這種字符,只需ctrl+V+M同時(shí)按下即可。

tar

tar [-cxtzjvfpPN] 文件與目錄 ….

-c:建立一個(gè)壓縮文件的參數(shù)指令(create 的意思);
-x:解開(kāi)一個(gè)壓縮文件的參數(shù)指令!
-t:查看 tarfile 里面的文件!
-r:向壓縮歸檔文件末尾追加文件
-u:更新原壓縮包中的文件
這五個(gè)是獨(dú)立的命令,壓縮解壓都要用到其中一個(gè),可以和別的命令連用但只能用其中一個(gè).
特別注意,在參數(shù)的下達(dá)中, c/x/t/r/u 僅能存在一個(gè)!不可同時(shí)存在!因?yàn)椴豢赡芡瑫r(shí)壓縮與解壓縮。

-z:有g(shù)zip屬性,即需要用 gzip 壓縮 -j:有bz2屬性,即需要用 bzip2 壓縮 -Z:有compress屬性的 -v :壓縮的過(guò)程中顯示文件(顯示所有過(guò)程)!這個(gè)常用,但不建議用在背景執(zhí)行過(guò)程! -O:將文件解開(kāi)到標(biāo)準(zhǔn)輸出 -f :使用檔名,請(qǐng)留意,在 f 之后要立即接檔名!不要再加參數(shù)!例如使用『 tar -zcvfP tfile sfile』就是錯(cuò)誤的寫(xiě)法,要寫(xiě)成『 tar -zcvPf tfile sfile』才對(duì)喔! -p :使用原文件的原來(lái)屬性(屬性不會(huì)依據(jù)使用者而變) -P :可以使用絕對(duì)路徑來(lái)壓縮! -N :比后面接的日期(yyyy/mm/dd)還要新的才會(huì)被打包進(jìn)新建的文件中! --exclude FILE:在壓縮的過(guò)程中,不要將 FILE 打包! -f: 使用檔案名字,切記,這個(gè)參數(shù)是最后一個(gè)參數(shù),后面只能接檔案名。 # tar -cf all.tar *.jpg 這條命令是將所有.jpg的文件打成一個(gè)名為all.tar的包。-c是表示產(chǎn)生新的包,-f指定包的文件名。 # tar -rf all.tar *.gif 這條命令是將所有.gif的文件增加到all.tar的包里面去。-r是表示增加文件的意思。 # tar -uf all.tar logo.gif 這條命令是更新原來(lái)tar包all.tar中l(wèi)ogo.gif文件,-u是表示更新文件的意思。 # tar -tf all.tar 這條命令是列出all.tar包中所有文件,-t是列出文件的意思 # tar -xf all.tar 這條命令是解出all.tar包中所有文件,-x是解開(kāi)的意思

1、*.tar 用 tar –xvf 解壓
2、*.gz 用 gzip -d或者gunzip 解壓
3、.tar.gz和.tgz 用 tar –xzf 解壓
4、*.bz2 用 bzip2 -d或者用bunzip2 解壓
5、*.tar.bz2用tar –xjf 解壓
6、*.Z 用 uncompress 解壓
7、*.tar.Z 用tar –xZf 解壓

rev

rev命令將文件中的每行內(nèi)容以字符為單位反序輸出,即第一個(gè)字符最后輸出,最后一個(gè)字符最先輸出,依次類推

colrm

colrm命令用于刪除文件中的指定列。colrm命令從標(biāo)準(zhǔn)輸入設(shè)備讀取數(shù)據(jù),轉(zhuǎn)而輸出到標(biāo)準(zhǔn)輸出設(shè)備。如果不加任何參數(shù),則colrm命令不會(huì)過(guò)濾任何一行。
colrm 開(kāi)始列號(hào) 結(jié)束列號(hào) < file

總結(jié)

以上是生活随笔為你收集整理的Shell文件的排序、合并和分割的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。

如果覺(jué)得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。