3.1 cat:合并文件或查看文件内容
生活随笔
收集整理的這篇文章主要介紹了
3.1 cat:合并文件或查看文件内容
小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.
cat 命令
可以理解為英文單詞concatenate的縮寫,其功能是連接多個文件并且打印到屏幕輸出,或者重定向到指定的文件中。此命令常用來顯示單個文件內(nèi)容,或者將幾個文件內(nèi)容連接起來一起顯示,還可以從標(biāo)準(zhǔn)輸入中讀取內(nèi)容并顯示,生產(chǎn)環(huán)境中它常與重定向或追加符號配合使用。 cat命令的記憶方法:cat的中文意思是貓,可理解為“瞄”一下文件內(nèi)容,即顯示文件內(nèi)容。cat具備5大常用功能,特整理為如表3-1所示。 1.查看文件內(nèi)容 例如:cat file.txt,這是cat最基本的功能之一 2.把多個文件合并成一個 例如:cat filel.txt file2.txt > newfile.txt 3.創(chuàng)建編輯新文件 例如:輸入cat>filel.txt,后面接要編輯的內(nèi)容,使用快捷鍵Ctrl+d或Ctrl+c可結(jié)束編輯,此功能應(yīng)用不多,了解即可 4.非交互式的編輯或追加內(nèi)容到文件尾部這是生產(chǎn)工作中最重要的一個應(yīng)用了,所以必須要熟練掌握,這里先給一個命令格式:cat>>file.txt<<EOFI love linuxEOF5.清空文件內(nèi)容 例如:使用cat /dev/null>file.txt命令就可以把文件內(nèi)容清空,但是文件還是存在的,這個功能生產(chǎn)工作中也會用到cat命令的參數(shù)選項及說明
-n?? ?從1開始對所有輸出的內(nèi)容按行編號 -b?? ?和-n選項功能類似,但會忽略顯示空白行行號 -s?? ?當(dāng)遇到有連續(xù)兩行以上的空白行時,就替換為一行空白行 -A?? ?等價于-vET三個選項的功能之和 -e????等價于-vE -E?? ?在每一行的行尾顯示$符號 -t?? ?與-vT等價 -T?? ?將Tab字符顯示為1 -v?? ?除了LFD和TAB之外,使用^和M-引用 執(zhí)行如下的完整命令生成cat.txt文件內(nèi)容 cat >cat.txt<<EOF welcome to learn linux love linux forever EOF #<==這里要按回車才能結(jié)束,另外,EOF必須成對出現(xiàn),但也可以用別的成對標(biāo)簽來替換。例如:lewen字符標(biāo)簽,默認(rèn)情況下,結(jié)尾的EOE必須要頂格寫。cat >cat.txt<<-EOF #<==如果cat后面使用了-符號,則結(jié)尾的EOF可以不用頂格,但要用tab縮進。welcome to learn linuxlove linux forever,my blog\'s site is http://www.wenyule.topEOF執(zhí)行過程 [root@cs6-mini ~]# cat >cat.txt<<EOF > > > welcome to learn linux > > love linux forever,my blog\'s site is http://www.wenyule.top > > >bye > EOF直接執(zhí)行cat命令,不帶任何選項。 [root@cs6-mini ~]# cat cat.txtwelcome to learn linuxlove linux forever,my blog\'s site is http://www.wenyule.topbye
執(zhí)行cat命令,分別帶-n及-b選項,并對比區(qū)別 [root@cs6-mini ~]# cat -n cat.txt1 2 3 welcome to learn linux4 5 love linux forever,my blog\'s site is http://www.wenyule.top6 7 8 bye [root@cs6-mini ~]# cat -b cat.txt1 welcome to learn linux2 love linux forever,my blog\'s site is http://www.wenyule.top3 bye -b選項和-n選項類似,但是,-b選項并不對空行編號。??
執(zhí)行cat命令,帶-E選項
[root@cs6-mini ~]# cat -E cat.txt $ $ welcome to learn linux$ $ love linux forever,my blog\'s site is http://www.wenyule.top$ $ $ bye$#<=說明:從上面的例子可以看出,-E選項就是把文件結(jié)尾的隱藏結(jié)束標(biāo)識符$符號顯示出來。即使是空行,結(jié)尾也是有結(jié)束標(biāo)識符的,這一點大家要注意 這個小例子更好地說明了即使是空行結(jié)尾也是有標(biāo)識符S的。因此,在計算文件占用空間時,要注意這點。 -A(-vET),-e(-vE)這兩個選項都包含-E選項,因此,其和-E的功能類似,但-v、-T這兩個選項在工作中使用得不多,了解一下就好了。 [root@cs6-mini ~]# cat -A cat.txt $ $ welcome to learn linux$ $ love linux forever,my blog\'s site is http://www.wenyule.top$ $ $ bye$ [root@cs6-mini ~]# cat -e cat.txt $ $ welcome to learn linux$ $ love linux forever,my blog\'s site is http://www.wenyule.top$ $ $ bye$執(zhí)行cat 命令,帶-s選項
[root@cs6-mini ~]# cat -s cat.txtwelcome to learn linuxlove linux forever,my blog\'s site is http://www.wenyule.top#由于-s選項的原因,變成一個空行了。 bye 從上面的例子可以看出,-s選項就是把兩個以上的空行變成一個空行,如果文件中連續(xù)的空行有很多,那么這個選項可以讓文件顯示得更加精煉易讀。 但是在實際生產(chǎn)工作中,我們還是習(xí)慣于使用grep -v "^S" cat.txt 過濾掉所有的空行(一個空行都不留),從而使得顯示更加緊湊一些. [root@cs6-mini ~]# grep -v "^$" cat.txt welcome to learn linux love linux forever,my blog\'s site is http://www.wenyule.top bye執(zhí)行cat命令編輯新文件
[root@cs6-mini ~]# cat > cat.txt hi,here is linux os[root@cs6-mini ~]# cat cat.txt hi,here is linux os 這里是利用cat和“>”重定向?qū)?biāo)準(zhǔn)輸出定向到文件的,這是一個特殊的編輯文件的方法。這里有幾個問題需要注意,具體如下。 結(jié)束編輯可以用快捷鍵Ctrl+d或Ctrl+c退出,但是必須要先執(zhí)行回車,將光標(biāo)定位到新的未輸入的行才行。 使用此種方式輸入時,會發(fā)現(xiàn)如果輸入錯了,只按退格鍵(Backspace)將會無法刪除,需要按住“Ctrl+退格鍵”才能刪除。 此操作為特殊編輯方法,作為擴展知識點提及,實際生產(chǎn)環(huán)境中使用得很少。執(zhí)行cat命令連接并顯示多個文件
[root@cs6-mini ~]# cat test1.txt test2.txt test1 file test2 file 這樣兩個文件會一起顯示,但還是有先后順序的,前面的test.txt的內(nèi)容會優(yōu)先顯示。利用cat實現(xiàn)一鍵優(yōu)化Linux系統(tǒng)腳本
這是使用cat命令實現(xiàn)非交互式地在文件結(jié)尾增加內(nèi)容的功能。下面的優(yōu)化腳本是批量修改配置文件的方法,是生產(chǎn)環(huán)境中經(jīng)常會用到的用法,要熟練掌握才好。 下面以一鍵優(yōu)化腳本中的一部分Linux服務(wù)器內(nèi)核選項為例來說明cat的功能。 所謂內(nèi)核優(yōu)化,主要是在Linux系統(tǒng)中針對業(yè)務(wù)服務(wù)應(yīng)用而進行的系統(tǒng)內(nèi)核選項優(yōu)化,優(yōu)化并無特殊的標(biāo)準(zhǔn),下面就以常見的生產(chǎn)環(huán)境Linux的內(nèi)核優(yōu)化為例進行講解,僅供大家參考。 #!/bin/bash /bin/cp /etc/sysctl.conf /etc/sysctl.conf.'date +%F_%T' #<==備份 sysctl.conf cat>>/etc/sysctl.conf<<EOF #<修改sysctl.conf #added by lewen at 2019 start net.ipv4.tcp_fin_timeout = 2 net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #end EOF sysctl -p &>/dev/null #<==加載sysctl.conf [root@cs6-mini ~]# vim opt_sysctl.sh [root@cs6-mini ~]# sh opt_sysctl.sh [root@cs6-mini ~]# tail -16 opt_sysctl.sh net.ipv4.tcp_tw_reuse = 1 net.ipv4.tcp_tw_recycle = 1 net.ipv4.tcp_syncookies = 1 net.ipv4.tcp_keepalive_time = 600 net.ipv4.ip_local_port_range = 4000 65000 net.ipv4.tcp_max_syn_backlog = 16384 net.ipv4.tcp_max_tw_buckets = 36000 net.ipv4.route.gc_timeout = 100 net.ipv4.tcp_syn_retries = 1 net.ipv4.tcp_synack_retries = 1 net.core.somaxconn = 16384 net.core.netdev_max_backlog = 16384 net.ipv4.tcp_max_orphans = 16384 #end EOF sysctl -p &>/dev/null #<==加載sysctl.conf利用cat在腳本中顯示幫助菜單
[root@cs6-mini scripts]# cat exportfs_usage.sh #!/bin/bashexportfs_usage() {cat <<ENDUSAGE:$0 {start|stop|monitor|status|validate-all} END } exportfs_usage[root@cs6-mini scripts]# sh exportfs_usage.shUSAGE:exportfs_usage.sh {start|stop|monitor|status|validate-all} 這里的cat命令可以用echo命令來代替,對于單行的內(nèi)容顯示和追加內(nèi)容,使用echo命令是非常合適的,cat的優(yōu)勢是針對多行文本內(nèi)容進行編輯,或者在已有內(nèi)容的結(jié)尾追加新內(nèi)容。利用cat在腳本中顯示內(nèi)容選擇菜單
[root@cs6-mini scripts]# cat menu.sh#!/bin/bashmenu(){cat <<END1.[apple]2.[pear]3.[banana]4.[cherry]5.[orange]please select one that you like: END } menu [root@cs6-mini scripts]# sh menu.sh1.[apple]2.[pear]3.[banana]4.[cherry]5.[orange]please select one that you like: 為了實現(xiàn)自動化運維,有時高級運維人員不得不通過腳本把操作寫好,然后讓組內(nèi)的初級運維或非運維的同事,通過傻瓜式的菜單選擇,來完成相應(yīng)的工作,進而提升工作效率。 上面的腳本,從美感的角度來看,還是有些缺陷的。比如: 改進后的腳本 [root@cs6-mini scripts]# cat menu.sh#!/bin/bashmenu(){cat <<-END1.[apple]2.[pear]3.[banana]4.[cherry]5.[orange]please select one that you like:END } menu [root@cs6-mini scripts]# sh menu.sh 1.[apple] 2.[pear] 3.[banana] 4.[cherry] 5.[orange] please select one that you like:利用cat連接多文件合并Web集群日志
在工作中,前端通常會有多個集群服務(wù)器節(jié)點,這時服務(wù)器記錄日志都是在本地記錄的,因此,完整的日志是所有服務(wù)器的日志總和。在Web節(jié)點把日志推到日志平臺后,首先要做的就是對所有節(jié)點當(dāng)天或者當(dāng)小時的日志進行合并,這時就可以用cat的多文件功能,當(dāng)然這不是必須的,還有別的方法,這里暫略,僅講解cat的生產(chǎn)應(yīng)用。 合并Web集群節(jié)點日志的命令如下: cat web01_access20130522.log log_web02access_20130522.log > web_access20130522.log cat web_access20130522.log 上面用cat合并后的總?cè)罩疚募娜罩拘胁]有按照用戶訪問的時間進行排序,若要按訪問時間進行排序,就要用到sort命令(請看后文詳解)了,它可以讓日志按第4列訪問時間列進行排序,整個處理方法如下: sort -k 4 web_access2010128.log #<==-k指定排序列,這里表示按第4列排序。?利用cat 命令實現(xiàn)一鍵MySQL主從同步
在進行MySQL主從同步時,最關(guān)鍵的步驟就是CHANGE MASTER..命令的使用了,如果希望非交互式地執(zhí)行CHANGE MASTER..命令的完整選項配置,那么下面的命令就是最合適的了。 以下是特殊生產(chǎn)場景下的應(yīng)用,MySQL將自動批量制作主從同步所需要的語句。 cat |mysql -uroot -p'oldboy'<<EOFCHANGE MASTER TOMASTER_HOST='10.0.0.16'MASTER_PORT=3306,MASTER_USER='lewenrep',MASTER_PASSWORD='lewenrep',MASTER_LOG_file='mysql-bin.000025',MASTER_LOG_POS=4269; EOF總結(jié)
以上是生活随笔為你收集整理的3.1 cat:合并文件或查看文件内容的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: S5 Linux信息显示与搜索文件命令
- 下一篇: 3.23 vi/vim:纯文本编辑器