Gnu-Parallel
使用 sed 並行替換特定於行的字元串時出現語法錯誤:{= s/_1/_2/ =}?
我有一個目錄,其中包含如下所示的文件:
id1_1.txt id1_2.txt id2_1.txt id2_2.txt
我需要將這些文件作為一對(例如
id1_1.txt
和id1_2.txt
)傳遞給my_script
.這是我認為可行的方法
parallel -j +0 -X python my_script.py -1 {} -2 {= s/_1/_2/ =} -o /output/dir/good /output/dir/bad ::: /my/dir/*_1.txt
-1
文件的結尾是哪裡,_1.txt
並且-2
是它的伙伴結尾_2.txt
。
my_script
辨識 option 的輸入-1
,但不辨識 option 的輸入-2
。顯然,它只是在尋找 option 的初始部分-2
:No such file or directory: '{='
我嘗試添加引號,但仍然得到相同的錯誤。
並行版本:
$ parallel --version GNU parallel 20120522 Copyright (C) 2007,2008,2009,2010,2011,2012 Ole Tange and Free Software Foundation, Inc. License GPLv3+: GNU GPL version 3 or later <http://gnu.org/licenses/gpl.html> This is free software: you are free to change and redistribute it. GNU parallel comes with no warranty. Web site: http://www.gnu.org/software/parallel When using GNU Parallel for a publication please cite: O. Tange (2011): GNU Parallel - The Command-Line Power Tool, ;login: The USENIX Magazine, February 2011:42-47.
正如 steeldriver 指出的那樣,我安裝的並行版本早於我正在使用的 synatx ( GNU parallel - NEWS )。
附帶說明一下,GNU 並行索引在頂部列出了最舊的版本,在底部列出了最新的版本。當我在我的新工作空間上下載並行時,我沒有註意這一點,並抓住了頂部的 .tar 以為它是最新版本。