Gnu-Parallel

使用 sed 並行替換特定於行的字元串時出現語法錯誤:{= s/_1/_2/ =}?

  • July 25, 2018

我有一個目錄,其中包含如下所示的文件:

id1_1.txt
id1_2.txt
id2_1.txt
id2_2.txt

我需要將這些文件作為一對(例如id1_1.txtid1_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 以為它是最新版本。

引用自:https://unix.stackexchange.com/questions/457798