在线观看www成人影院-在线观看www日本免费网站-在线观看www视频-在线观看操-欧美18在线-欧美1级

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

Linux管道符不是你想用就能亂用的!

jf_TEuU2tls ? 來(lái)源:浩道linux ? 2023-06-28 09:12 ? 次閱讀

一、什么是管道符?

管道符號(hào),是unix一個(gè)很強(qiáng)大的功能,符號(hào)為一條豎線:"|"。

用法:命令 1 | 命令 2

功能是把第一個(gè)命令,即命令 1執(zhí)行的結(jié)果作為命令 2的輸入傳給命令 2

例如命令:

cat test.txt | wc -l

命令功能拆解

cat test.txt命令功能是打印test.txt文件內(nèi)容(行數(shù))。

wc -l命令完成行數(shù)統(tǒng)計(jì)。

整個(gè)命令功能就是將cat test.txt的執(zhí)行結(jié)果,通過(guò)管道符|,傳給后一個(gè)命令wc -l,作為wc -l命令的執(zhí)行對(duì)象。

即上述兩個(gè)命令結(jié)合管道符完成對(duì)test.txt文件的行數(shù)統(tǒng)計(jì)。

二、使用管道符的便捷之處

通過(guò)上述簡(jiǎn)單例子,我們應(yīng)該可以看出使用管道符確實(shí)有它便捷的地方。以下羅列幾個(gè),讓大家加深對(duì)于管道符使用的便捷之處。

例子1:通過(guò)shell分析,查看2023年4月1日14時(shí)這一個(gè)小時(shí)內(nèi)有多少IP訪問(wèn)網(wǎng)站;

awk '{print $4,$1}' log_file | grep 01/Apr/2023:14 | awk '{print $2}'| sort | uniq | wc -l

例子2:通過(guò)shell分析網(wǎng)站日志,查看有多少個(gè)IP訪問(wèn)?

awk '{print $1}' log_file|sort|uniq|wc -l

為什么要少用管道符?

這個(gè)才是我們本文講解的重點(diǎn),也是作為一個(gè)高級(jí)linux運(yùn)維人員所要知道的,為什么要少用管道符?并不是說(shuō)方便就可以大量使用,我們需要考慮到其執(zhí)行的速度及效率,下面一起通過(guò)實(shí)例看看管道符要少用的原因!

實(shí)例:通過(guò)多種統(tǒng)計(jì)字符串長(zhǎng)度命令的執(zhí)行效率進(jìn)行對(duì)比,得出管道符要少用的具體原因!

(一)統(tǒng)計(jì)字符串長(zhǎng)度的命令有哪些?以下舉例4個(gè)方法。

方法1:通過(guò)echo ${#str1}命令進(jìn)行統(tǒng)計(jì),其中str1為自定義字符串變量。

方法2:通過(guò)expr length "${str1}"命令進(jìn)行統(tǒng)計(jì),其中str1為自定義字符串變量。

方法3:通過(guò)echo命令,結(jié)合管道符,以及awk命令實(shí)現(xiàn),如下命令:

echo"${str1}"|awk'{printlength($0)}'

其中str1為自定義字符串變量。

方法4:通過(guò)echo命令,結(jié)合管道符,以及wc命令實(shí)現(xiàn),如下命令:

echo ${#str1} |wc -L

其中str1為自定義字符串變量。

(二)以上4種統(tǒng)計(jì)字符串長(zhǎng)度的方法命令,哪一種效率最高,即速度最快?

以下先通過(guò)seq相關(guān)命令來(lái)生成相關(guān)的字符串長(zhǎng)度。然后通過(guò)for循環(huán)執(zhí)行來(lái)控制字符串生成次數(shù)的情況下,最后再通過(guò)time命令統(tǒng)計(jì)整個(gè)命令的執(zhí)行時(shí)間,通過(guò)同等循環(huán)條件下,不同命令,結(jié)合直觀的運(yùn)行時(shí)間進(jìn)行比較,得出效率最高的方法。

執(zhí)行結(jié)果1:方法1中,通過(guò)echo ${#str1}命令進(jìn)行統(tǒng)計(jì),具體命令如下:

time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo ${#str1} &> /dev/null;done

命令執(zhí)行結(jié)果,所耗時(shí)間如下:

[root@haodaolinux1 ~]# time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo ${#str1} &> /dev/null;done


real    0m19.519s
user    0m8.606s
sys     0m11.374s

通過(guò)上述命令執(zhí)行結(jié)果看出,該方法1耗時(shí)為19.519秒左右;

執(zhí)行結(jié)果2:方法2中,通過(guò)expr length "${str1}"命令進(jìn)行統(tǒng)計(jì),具體命令如下:

time for i in {1..10000};do str1=`seq -s "haodao" 100`;expr length "${str1}" &> /dev/null;done

命令執(zhí)行結(jié)果,所耗時(shí)間如下:

[root@haodaolinux1 ~]# time for i in {1..10000};do str1=`seq -s "haodao" 100`;expr length "${str1}" &> /dev/null;done


real    0m36.041s
user    0m15.888s
sys     0m21.697s

通過(guò)上述命令執(zhí)行結(jié)果看出,該方法1耗時(shí)為36.041秒左右;

執(zhí)行結(jié)果3:方法3中,通過(guò)echo命令,結(jié)合管道符,以及awk命令實(shí)現(xiàn)進(jìn)行統(tǒng)計(jì),具體命令如下:

time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo "${str1}" | awk '{print length($0)}' &> /dev/null;done

命令執(zhí)行結(jié)果,所耗時(shí)間如下:

time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo "${str1}" | awk '{print length($0)}' &> /dev/null;done


real    0m45.241s
user    0m21.136s
sys     0m35.092s

通過(guò)上述命令執(zhí)行結(jié)果看出,該方法1耗時(shí)為45.241秒左右;

執(zhí)行結(jié)果4:方法4中,通過(guò)echo命令,結(jié)合管道符,以及wc命令實(shí)現(xiàn)進(jìn)行統(tǒng)計(jì),具體命令如下:

time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo ${#str1} |wc -L &> /dev/null;done

命令執(zhí)行結(jié)果,所耗時(shí)間如下:

[root@haodaolinux1 ~]# time for i in {1..10000};do str1=`seq -s "haodao" 100`;echo ${#str1} |wc -L &> /dev/null;done


real    0m43.024s
user    0m20.671s
sys     0m34.042s

通過(guò)上述命令執(zhí)行結(jié)果看出,該方法1耗時(shí)為43.024秒左右;

結(jié)語(yǔ):通過(guò)以上4種方法執(zhí)行結(jié)果,我們很清楚得出方法1所耗時(shí)最少,效率最高。方法2次之;方法3和方法4中都結(jié)合了管道符的使用,耗時(shí)最多,效率最低。這里面有什么門道呢?我們都知道linux中的shell是由C語(yǔ)言開發(fā)的,因此它底層命令效率是最高的,而方法1中用的是linux內(nèi)置命令,內(nèi)置的操作;方法2中使用linux內(nèi)置函數(shù),效率高也就自然而然了。而方法3和方法4通過(guò)管道符,這涉及到類似二次加工,效率肯定也就低了。這下,我們知道了吧,管道符雖然在某些使用場(chǎng)景下很便捷,但是其也有其效率低的缺點(diǎn),因此不能多用!





審核編輯:劉清

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Linux
    +關(guān)注

    關(guān)注

    87

    文章

    11312

    瀏覽量

    209738
  • C語(yǔ)言
    +關(guān)注

    關(guān)注

    180

    文章

    7605

    瀏覽量

    137020

原文標(biāo)題:切記!Linux管道符不是你想用就能亂用的!

文章出處:【微信號(hào):浩道linux,微信公眾號(hào):浩道linux】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    Linux匿名管道和命名管道的區(qū)別

    管道是 UNIX系統(tǒng) IPC的最古老的形式,所有的UNIX系統(tǒng)都提供此種通信。所謂的管道,也就是內(nèi)核里面的一串緩存,從管道的一段寫入的數(shù)據(jù),實(shí)際上是緩存在內(nèi)核中的,令一端讀取,也就是從內(nèi)核中讀取這段
    發(fā)表于 10-12 12:50 ?1006次閱讀

    [9.6]--管道符_clip001

    Linux
    jf_90840116
    發(fā)布于 :2023年02月19日 21:04:47

    [9.6]--管道符_clip002

    Linux
    jf_90840116
    發(fā)布于 :2023年02月19日 21:05:31

    Linux下進(jìn)程間通信方式-管道

    Linux下進(jìn)程間通信方式-管道分享到: 本文關(guān)鍵字: linux 管道通信,linux 進(jìn)程通信方式 ,無(wú)名
    發(fā)表于 08-29 15:29

    標(biāo)準(zhǔn)流管道

    華清遠(yuǎn)見(jiàn)嵌入式linux學(xué)習(xí)資料《標(biāo)準(zhǔn)流管道》,1.標(biāo)準(zhǔn)流管道函數(shù)說(shuō)明 。與Linux的文件操作中有基于文件流的標(biāo)準(zhǔn)I/O操作一樣,管道的操
    發(fā)表于 09-09 14:13

    接地磁珠不要亂用

    開關(guān)電源的相關(guān)知識(shí)學(xué)習(xí)教材資料——接地磁珠不要亂用
    發(fā)表于 09-20 16:10 ?0次下載

    Linux系統(tǒng)管道和有名管道的通信機(jī)制解析

    Linux 進(jìn)程間通信的幾種主要手段。其中管道和有名管道是最早的進(jìn)程間通信機(jī)制之一,管道可用于具有親緣關(guān)系進(jìn)程間的通信,有名管道克服了
    發(fā)表于 11-07 10:51 ?0次下載

    Linux中的管道和命名管道介紹

    Linux 中,pipe 能讓你將一個(gè)命令的輸出發(fā)送給另一個(gè)命令。管道,如它的名稱那樣,能重定向一個(gè)進(jìn)程的標(biāo)準(zhǔn)輸出、輸入和錯(cuò)誤到另一個(gè)進(jìn)程,以便于進(jìn)一步處理。
    的頭像 發(fā)表于 09-23 10:33 ?4043次閱讀
    <b class='flag-5'>Linux</b>中的<b class='flag-5'>管道</b>和命名<b class='flag-5'>管道</b>介紹

    管道數(shù)據(jù)流"實(shí)時(shí)性" 和使用小提示

    相信很多在linux平臺(tái)工作的童鞋, 都很熟悉管道符 '|', 通過(guò)它, 我們能夠很靈活的將幾種不同的命令協(xié)同起來(lái)完成一件任務(wù)
    的頭像 發(fā)表于 08-09 17:36 ?3115次閱讀

    Linux進(jìn)程間通信方式——管道

    管道Linux中進(jìn)程間通信的一種方式,它把一個(gè)程序的輸出直接連接到另一個(gè)程序的輸入。Linux管道主要包括兩種:無(wú)名管道和有名
    發(fā)表于 06-01 09:13 ?1458次閱讀
    <b class='flag-5'>Linux</b>進(jìn)程間通信方式——<b class='flag-5'>管道</b>

    Linux進(jìn)程間通信方法之管道

    上文中我們介紹了進(jìn)程間通信的方法之一:信號(hào),本文將繼續(xù)介紹另一種進(jìn)程間通信的方法,即管道管道Linux中使用shell經(jīng)常用到的一個(gè)技術(shù),本文將深入剖析管道的實(shí)現(xiàn)和運(yùn)行邏輯。
    的頭像 發(fā)表于 05-14 15:47 ?1980次閱讀
    <b class='flag-5'>Linux</b>進(jìn)程間通信方法之<b class='flag-5'>管道</b>

    Linux系統(tǒng)用戶與用戶組管理

    看到上面那條命令,你是不是有點(diǎn)不知所以呢?其實(shí),head前面的符號(hào)|,我們稱為管道符,它的作用是把前面的命令的輸出再輸入給后面的命令。管道符在第11章中還會(huì)介紹,阿銘用得也是蠻多的,請(qǐng)掌握它的用法。
    的頭像 發(fā)表于 10-20 09:19 ?834次閱讀

    linux管道符的使用

    大家好,這里是浩道linux,主要給大家分享linux、python、網(wǎng)絡(luò)通信相關(guān)的IT知識(shí)平臺(tái)。
    的頭像 發(fā)表于 04-11 11:11 ?4280次閱讀

    linux知識(shí)中常用到的管道符號(hào)有哪些

    作為一個(gè)高級(jí)linux運(yùn)維人員所要知道的,為什么要少用管道符?并不是說(shuō)方便就可以大量使用,我們需要考慮到其執(zhí)行的速度及效率,下面一起通過(guò)實(shí)例看看管道符要少用的原因!
    發(fā)表于 09-29 07:00 ?2187次閱讀

    linux管道概述

    一、進(jìn)程間通信(IPC)介紹 進(jìn)程間通信(IPC,InterProcess Communication)是指在不同進(jìn)程之間傳播或交換信息。 IPC的方式通常有管道(包括無(wú)名管道和命名管道)、消息隊(duì)列
    的頭像 發(fā)表于 02-18 14:51 ?510次閱讀
    <b class='flag-5'>linux</b><b class='flag-5'>管道</b>概述
    主站蜘蛛池模板: 一级特黄aaa大片在| 久久艹免费视频| 欧美黄区| 天天干天天综合| 天天躁天天爽| 99久久精品久久久久久婷婷| 免费能看的黄色网址| 欧美一区二区三区黄色| 免费黄色一级| 国产免费一区二区三区最新| 男人的天堂色偷偷| 桃色婷婷| 一级毛片a| 无人区理论片手机看片| 日韩网| 看全色黄大色大片免费久久 | 午夜视频播放| 大学生毛片| 黄色大片网| 成年啪啪网站免费播放看| 国产黄色大片又色又爽| 老色皮| 丁香婷婷久久| 国产jzjzjz免费大全视频| 80s国产成年女人毛片| 一级特黄aaa大片| 欧美黑粗硬| 丁香欧美| 一级待一黄aaa大片在线还看| 日韩在线三级| 国产免费成人在线视频| 天天看天天爽天天摸天天添| 国产精品超清大白屁股| 天天透天天操| 精品久久久久久久免费加勒比| 在线观看黄色x视频| 中文字幕在线观看亚洲| 永久免费人成网ww555kkk手机| 日本不卡视频在线播放| 在线婷婷| 亚洲性色成人|