婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av

主頁 > 知識庫 > GNU Parallel的具體使用

GNU Parallel的具體使用

熱門標簽:柳州市機器人外呼系統報價 外呼系統不彈窗 廈門營銷外呼系統平臺 外呼系統的經營范圍 云會外呼系統 申請400電話價格多少 安陽ai電銷機器人軟件 智能電話機器人坐席 涪陵商都400電話開通辦理

它是什么?

GNU Parallel是一個shell工具,為了在一臺或多臺計算機上并行的執行計算任務,一個計算任務可以是一條shell命令或者一個以每一行做為輸入的腳本程序。通常的輸入是文件列表、主機列表、用戶列表、URL列表或者表格列表;一個計算任務也可以是一個從管道讀取的一條命令。GNU Parallel會把輸入分塊,然后通過管道并行的執行。

如果你會使用xargs和tee命令,你會發現GNU Parallel非常易于使用,因為GNU Parallel具有與xargs一樣的選項。GNU Parallel可以替代大部分的shell循環,并且用并行的方式更快的完成計算任務。

GNU Parallel保證它的輸出與順序執行計算任務時是一樣的,這樣就可以方便的把GNU Parallel的輸出做為其它程序的輸入。

對于每一行輸入,GNU Parallel會把這一行做為參數來運行指定的命令。如果沒有給出命令,那么這一行會被當做命令執行。多行輸入會并行的運行。GNU Parallel經常被用于替代xargs或者cat | bash。

指南

本教程展示了絕大多數GNU Parallel的功能。旨在介紹GNU Parallel中的一個選項,而非講解真實世界中使用的例子。花一個小時的時間學習本教程,你會由此愛上上命令行。

預備

為了執行本教程中的示例,你首先需要做如下準備:

parallel >= version 20130814

安裝最新版:

(wget -O - pi.dk/3 || curl pi.dk/3/) | bash

這條命令同時也會安裝最新版的指南

man parallel_tutorial

本教程的大部分內容同時也兼容舊版本。

abc-file

生成文件:

parallel -k echo ::: A B C > abc-file

def-file

生成文件:

parallel -k echo ::: D E F > def-file

abc0-file

生成文件:

perl -e 'printf "A\0B\0C\0"' > abc0-file

abc_-file

生成文件:

perl -e 'printf "A_B_C_"' > abc_-file

tsv_file.tsv

生成文件:

perl -e 'printf "f1\tf2\nA\tB\nC\tD\n"' > tsv-file.tsv

num30000

生成文件:

perl -e 'for(1..30000){print "$_\n"}' > num30000

num1000000

生成文件:

perl -e 'for(1..1000000){print "$_\n"}' > num1000000

num_%header

生成文件:

(echo %head1; echo %head2; perl -e 'for(1..10){print "$_\n"}') > num_%header

遠程執行:ssh免密碼登錄$SERVER1和$SERVER2

生成文件:

SERVER1=server.example.com
SERVER2=server2.example.net

最后應該成功運行如下命令:

ssh $SERVER1 echo works
ssh $SERVER2 echo works

使用 ssh-keygen -t dsa; ssh-copy-id $SERVER1 建立環境(使用empty pass phrase)

輸入源

GNU Parallel的輸入源支持文件、命令行和標準輸入(stdin或pipe)

單個輸入源

從命令行讀取輸入:

parallel echo ::: A B C

輸出(由于任務以并行的方式執行,順序可能會有所不同):

A
B
C

文件做為輸入源:

parallel -a abc-file echo

輸出同上。

STDIN(標準輸入)做為輸入源:

cat abc-file | parallel echo

輸出同上。

多輸入源

GNU Parallel支持通過命令行指定多個輸入源,它會生成所有的組合:

parallel echo ::: A B C ::: D E F

輸出:

A D
A E
A F
B D
B E
B F
C D
C E
C F

多個文件做為輸入源:

parallel -a abc-file -a def-file echo

輸出同上。

STDIN(標準輸入)可以做為輸入源中的一個,使用“-”:

cat abc-file | parallel -a - -a def-file echo

輸出同上。

可以使用“::::”替代 -a:

cat abc-file | parallel echo :::: - def-file

輸出同上。

::: 和 :::: 可以混合使用:

parallel echo ::: A B C :::: def-file

輸出同上。

適配參數

–xapply 從每一個輸入源取一個參數:

parallel --xapply echo ::: A B C ::: D E F

輸出:

A D
B E
C F

如果其中一個輸入源的長度比較短,它的值會被重復:

parallel --xapply echo ::: A B C D E ::: F G

輸出:

A F
B G
C F
D G
E F

改變參數分隔符

GNU Parallel可以指定分隔符替代 ::: 或 ::::,當這兩個符號被其它命令占用的時候會特別有用:

parallel --arg-sep ,, echo ,, A B C :::: def-file

輸出:

A D
A E
A F
B D
B E
B F
C D
C E
C F

改變參數分隔符:

parallel --arg-file-sep // echo ::: A B C // def-file

輸出同上。

改變參數定界符

GNU Parallel默認把一行做為一個參數:使用 \n 做為參數定界符。可以使用 -d 改變:

parallel -d _ echo :::: abc_-file

輸出:

A
B
C

\0 代表NULL:

parallel -d '\0' echo :::: abc0-file

輸出同上。

-0 是 -d '\0' 的簡寫(通常用于從 find … -print0讀取輸入):

parallel -0 echo :::: abc0-file

輸出同上。

輸入源中的結束值

GNU Parallel支持指定一個值做為結束標志:

parallel -E stop echo ::: A B stop C D

輸出:

A
B

跳過空行

使用 –no-run-if-empty 來跳過空行:

(echo 1; echo; echo 2) | parallel --no-run-if-empty echo

輸出:

1
2

構建命令行

沒有指定命令意味著參數就是命令

如果parallel之后沒有給定命令,那么這些參數會被當做命令:

parallel ::: ls 'echo foo' pwd

輸出:

[當前文件列表]
foo
[當前工作目錄的路徑]

命令可以是一個腳本文件,一個二進制可執行文件或一個bash的函數(須用 export -f 導出函數):

# Only works in Bash and only if $SHELL=.../bash
my_func() {
 echo in my_func $1
}
export -f my_func
parallel my_func ::: 1 2 3

輸出:

in my_func 1
in my_func 2
in my_func 3

替換字符串

5種替換字符串

GNU Parallel支持多種替換字符串。默認使用 {}:

parallel echo ::: A/B.C

輸出:

A/B.C

指定 {} :

parallel echo {} ::: A/B.C

輸出同上

去掉擴展名 {.}:

parallel echo {.} ::: A/B.C

輸出

A/B

去掉路徑 {/}:

parallel echo {/} ::: A/B.C

輸出:

B.C

只保留路徑 {//}:

parallel echo {//} ::: A/B.C

輸出:

A

去掉路徑和擴展名 {/.}:

parallel echo {/.} ::: A/B.C

輸出:

B

輸出任務編號:

parallel echo {#} ::: A/B.C

輸出:

1
2
3

改變替換字符串

使用 -I 改變替換字符串符號 {}:

parallel -I ,, echo ,, ::: A/B.C

輸出:

A/B.C

–extensionreplace替換 {.}:

parallel --extensionreplace ,, echo ,, ::: A/B.C

輸出:

A/B

–basenamereplace替換 {/}:

parallel --basenamereplace ,, echo ,, ::: A/B.C

輸出:

B.C

–dirnamereplace替換 {//}:

parallel --dirnamereplace ,, echo ,, ::: A/B.C

輸出:

A

–basenameextensionreplace替換 {/.}:

parallel --basenameextensionreplace ,, echo ,, ::: A/B.C

輸出:

B

–seqreplace替換 {#}:

parallel --seqreplace ,, echo ,, ::: A B C

輸出:

1
2
3

指定位置替換字符串

如果有多個輸入源時,可以通過 {編號} 指定某一個輸入源的參數:

parallel echo {1} and {2} ::: A B ::: C D

輸出:

A and C
A and D
B and C
B and D

可以使用 / // /. 和 .: 改變指定替換字符串:

parallel echo /={1/} //={1//} /.={1/.} .={1.} ::: A/B.C D/E.F

輸出:

/=B.C //=A /.=B .=A/B
/=E.F //=D /.=E .=D/E

位置可以是負數,表示倒著數:

parallel echo 1={1} 2={2} 3={3} -1={-1} -2={-2} -3={-3} ::: A B ::: C D ::: E F

輸出:

1=A 2=C 3=E -1=E -2=C -3=A
1=A 2=C 3=F -1=F -2=C -3=A
1=A 2=D 3=E -1=E -2=D -3=A
1=A 2=D 3=F -1=F -2=D -3=A
1=B 2=C 3=E -1=E -2=C -3=B
1=B 2=C 3=F -1=F -2=C -3=B
1=B 2=D 3=E -1=E -2=D -3=B
1=B 2=D 3=F -1=F -2=D -3=B

按列輸入

使用 –colsep 把文件中的行切分為列,做為輸入參數。下面使用TAB(\t):

1=f1 2=f2
1=A 2=B
1=C 2=D

指定參數名

使用 –header 把每一行輸入中的第一個值做為參數名:

parallel --header : echo f1={f1} f2={f2} ::: f1 A B ::: f2 C D

輸出:

f1=A f2=C
f1=A f2=D
f1=B f2=C
f1=B f2=D

使用 –colsep 處理使用TAB做為分隔符的文件:

parallel --header : --colsep '\t' echo f1={f1} f2={f2} :::: tsv-file.tsv

輸出:

f1=A f2=B
f1=C f2=D

多參數

–xargs 讓GNU Parallel支持一行多個參數(可以指定上限):

cat num30000 | parallel --xargs echo | wc -l

輸出:

2

30000個參數被分為兩行。

一行中的參數個數的上限通過 -s 指定。下面指定最大長度是10000,會被分為17行:

cat num30000 | parallel --xargs -s 10000 echo | wc -l

為了獲得更好的并發性,GNU Parallel會在文件讀取結束后再分發參數。

GNU Parallel 在讀取完最后一個參數之后,才開始第二個任務,此時會把所有的參數平均分配到4個任務(如果指定了4個任務)。

第一個任務與上面使用 –xargs 的例子一樣,但是第二個任務會被平均的分成4個任務,最終一共5個任務。

cat num30000 | parallel --jobs 4 -m echo | wc -l

輸出:

5

10分參數分配到4個任務可以看得更清晰:

parallel --jobs 4 -m echo ::: {1..10}

輸出:

1 2 3
4 5 6
7 8 9
10

替換字符串可以是單詞的一部分。通過下面兩個命令體會 -m 和 -X 的區別:

parallel --jobs 4 -m echo pre-{}-post ::: A B C D E F G

輸出:

pre-A B-post
pre-C D-post
pre-E F-post
pre-G-post

-X與 -m 相反:

parallel --jobs 4 -X echo pre-{}-post ::: A B C D E F G


輸出:

pre-A-post pre-B-post
pre-C-post pre-D-post
pre-E-post pre-F-post
pre-G-post

使用 -N 限制每行參數的個數:

parallel -N3 echo ::: A B C D E F G H

輸出:

A B C
D E F
G H

-N也可以用于指定位置替換字符串:

parallel -N3 echo 1={1} 2={2} 3={3} ::: A B C D E F G H

輸出:

1=A 2=B 3=C
1=D 2=E 3=F
1=G 2=H 3=

-N0 只讀取一個參數,但不附加:

parallel -N0 echo foo ::: 1 2 3

輸出:

foo
foo
foo

引用

如果命令行中包含特殊字符,就需要使用引號保護起來。

perl腳本 'print “@ARGV\n”' 與linux的 echo 的功能一樣。

perl -e 'print "@ARGV\n"' A

輸出:

A

使用GNU Parallel運行這條命令的時候,perl命令需要用引號包起來:

parallel perl -e 'print "@ARGV\n"' ::: This wont work

輸出:

[Nothing]

使用 -q 保護perl命令:

parallel -q perl -e 'print "@ARGV\n"' ::: This works

輸出:

This
works

也可以使用 ' :

parallel perl -e \''print "@ARGV\n"'' ::: This works, too

輸出:

This
works,
too

使用 -quote:

parallel --shellquote
parallel: Warning: Input is read from the terminal. Only experts do this on purpose. Press CTRL-D to exit.
perl -e 'print "@ARGV\n"'
[CTRL-D]

輸出:

perl\ -e\ \'print "@ARGV\n"'

也可以使用命令:

parallel perl\ -e\ \'print "@ARGV\n"' ::: This also works

輸出:

This
also
works

去除空格

使用 –trim 去除參數兩頭的空格:

parallel --trim r echo pre-{}-post ::: ' A '

輸出:

pre- A-post

刪除左邊的空格:

parallel --trim l echo pre-{}-post ::: ' A '

輸出:

pre-A -post

刪除兩邊的空格:

parallel --trim lr echo pre-{}-post ::: ' A '

輸出:

pre-A-post

控制輸出

以參數做為輸出前綴:

parallel --tag echo foo-{} ::: A B C

輸出:

A       foo-A
B       foo-B
C       foo-C

修改輸出前綴 –tagstring:

parallel --tagstring {}-bar echo foo-{} ::: A B C

輸出:

 A-bar       foo-A

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

標簽:巴中 蕪湖 福州 綏化 晉城 撫順 孝感 南充

巨人網絡通訊聲明:本文標題《GNU Parallel的具體使用》,本文關鍵詞  GNU,Parallel,的,具體,使用,;如發現本文內容存在版權問題,煩請提供相關信息告之我們,我們將及時溝通與處理。本站內容系統采集于網絡,涉及言論、版權與本站無關。
  • 相關文章
  • 下面列出與本文章《GNU Parallel的具體使用》相關的同類信息!
  • 本頁收集關于GNU Parallel的具體使用的相關信息資訊供網民參考!
  • 推薦文章
    婷婷综合国产,91蜜桃婷婷狠狠久久综合9色 ,九九九九九精品,国产综合av
    欧美三级电影在线看| 蜜臀国产一区二区三区在线播放 | 亚洲乱码国产乱码精品精可以看| 国产成人久久精品77777最新版本| 日韩欧美综合一区| 久久精品国产亚洲a| 中文字幕一区二区三区视频| 91蜜桃网址入口| 久久精品国产第一区二区三区| 亚洲色图欧美激情| 99精品视频在线观看免费| 国产日韩欧美综合一区| 国产一区高清在线| 欧美不卡在线视频| 国内精品伊人久久久久影院对白| 欧美性猛片aaaaaaa做受| 一区二区三区免费在线观看| 成人午夜碰碰视频| 亚洲精品欧美激情| 欧美一区二区三区在线看| 亚洲国产日日夜夜| 欧美色精品天天在线观看视频| 亚洲综合一区二区三区| 91麻豆精品久久久久蜜臀| 蜜臀精品一区二区三区在线观看| 精品国产亚洲一区二区三区在线观看| 免费观看一级欧美片| 中文字幕欧美日本乱码一线二线| 色菇凉天天综合网| 久久99国产精品麻豆| 综合欧美亚洲日本| 日韩一级在线观看| 99视频在线精品| 久久91精品国产91久久小草 | 国产剧情一区二区| 亚洲网友自拍偷拍| 中文字幕一区免费在线观看| 日韩欧美中文一区| 欧美日韩免费高清一区色橹橹| 国产一区二区免费在线| 日本va欧美va瓶| 五月天一区二区三区| 亚洲国产日韩av| 亚洲高清久久久| 一区二区三区精密机械公司| 国产蜜臀97一区二区三区| 日韩一区二区视频| 欧美专区亚洲专区| 欧美日韩一区二区在线观看 | 中文字幕国产一区| 精品国产91久久久久久久妲己| 不卡视频一二三| 国内精品第一页| 国产成人av电影在线观看| 亚洲精品成人在线| 亚洲成人免费av| 性欧美疯狂xxxxbbbb| 亚洲小少妇裸体bbw| 综合久久国产九一剧情麻豆| 亚洲国产一区二区三区| 免费av成人在线| 国产91精品久久久久久久网曝门| 丰满白嫩尤物一区二区| 波多野结衣一区二区三区| 色综合久久久久久久久| 欧美电影免费观看完整版| 精品福利在线导航| 中文字幕的久久| 亚洲一二三区在线观看| 国产成人av电影在线观看| 成人一区二区三区在线观看| 91福利在线免费观看| 日韩精品一区国产麻豆| 久久男人中文字幕资源站| 亚洲欧洲综合另类在线| 美女免费视频一区二区| 91在线小视频| 久久久久久久久久久99999| 午夜精品久久久久久不卡8050| 国产成人av影院| 久久综合色综合88| 狠狠久久亚洲欧美| 中文在线免费一区三区高中清不卡| 亚洲激情在线激情| 色综合天天视频在线观看| 久久久电影一区二区三区| 日本视频中文字幕一区二区三区| 懂色中文一区二区在线播放| 欧美成人欧美edvon| 午夜电影久久久| 欧美一区二区大片| 国产综合色在线| 精品国产sm最大网站免费看| 国产很黄免费观看久久| 国产亚洲一区二区在线观看| 成人国产精品视频| 亚洲在线视频一区| 91精品国产一区二区| 天天综合天天综合色| 欧美大片在线观看一区| 高清av一区二区| 亚洲chinese男男1069| 亚洲精品一区二区三区香蕉| 成人18视频日本| 美脚の诱脚舐め脚责91| 亚洲欧美日韩一区二区 | 成人综合在线观看| 丝袜美腿亚洲一区| 久久精品男人天堂av| 成人高清视频免费观看| 日本不卡一二三| 一区二区三区欧美亚洲| 国产亚洲成av人在线观看导航| 在线免费观看日本一区| 国产高清在线观看免费不卡| 午夜婷婷国产麻豆精品| 亚洲欧美影音先锋| 精品国产乱码久久久久久浪潮| 欧美人狂配大交3d怪物一区| av不卡免费电影| 色综合视频在线观看| 91老师片黄在线观看| 色乱码一区二区三区88 | 亚洲成人第一页| 亚洲综合在线视频| 亚洲成人午夜影院| 日一区二区三区| 久久精品久久99精品久久| 精品系列免费在线观看| 国产精品一二三区| 99久久综合色| 欧美日韩国产123区| 日韩视频一区二区三区在线播放| 日韩三级av在线播放| 中文无字幕一区二区三区| 26uuu国产电影一区二区| 久久久午夜电影| 中文字幕 久热精品 视频在线| 久久久久成人黄色影片| 国产精品国产三级国产aⅴ入口| 久久国产福利国产秒拍| 日韩激情中文字幕| 亚洲欧美另类在线| 亚洲欧美偷拍三级| 日韩欧美的一区二区| 蜜臀av一区二区| 奇米精品一区二区三区在线观看一| 欧美亚洲综合网| 久久国产视频网| 久久机这里只有精品| 中文一区在线播放| 欧美激情综合在线| 中文字幕电影一区| 在线一区二区三区| 成人av动漫在线| 亚洲国产另类av| 日韩高清一区二区| 国产精品国产三级国产aⅴ入口| 亚洲天堂av一区| 精品一区二区三区在线播放视频| 亚洲福利一二三区| 91原创在线视频| 国产精品国产自产拍高清av| 国产成人免费在线观看| 91精品欧美久久久久久动漫| 午夜精品一区二区三区免费视频| 国产喷白浆一区二区三区| 欧美午夜电影一区| 日韩一区在线免费观看| 国产在线播放一区三区四| 精品理论电影在线观看| 亚洲国产日韩a在线播放性色| 91在线视频在线| 天涯成人国产亚洲精品一区av| av激情成人网| 日本不卡一二三区黄网| 久久综合色一综合色88| 九九精品视频在线看| 中文字幕第一区综合| 99精品国产99久久久久久白柏| 午夜精品久久久| 自拍视频在线观看一区二区| 日韩午夜激情电影| 91美女片黄在线观看91美女| 日韩精品一区第一页| 久久久久久99久久久精品网站| 91亚洲精品久久久蜜桃| 国产乱人伦偷精品视频不卡| 亚洲二区视频在线| 亚洲欧美日本韩国| 久久久久久久久99精品| 欧美日本一区二区三区四区| 91小视频在线| 成人一级视频在线观看| 国产一区二区三区免费看| 日本最新不卡在线| 午夜久久久久久电影| 日韩成人一级片| 日韩av不卡在线观看| 午夜av电影一区|