sed を並列化すると、別の出力が提供されます。

sed を並列化すると、別の出力が提供されます。

ただし、sed操作を並列化しようとすると、並列バージョンが機能しても無効な出力が返されます。

私は並列化されたsed操作が欲しい(動作します)

sed 's/\s.*$// ; s/\(.*\)/\L\1/' < oldfile.txt > newfile.txt

上記のsed操作の並列バージョン(何らかの理由で機能しません):

parallel -a oldfile.txt -k --block $BYTES --pipe-part "sed 's/\s.*$// ; s/\(.*\)/\L\1/'" > newfile.txt

ベストアンサー1

これは通常二重引用符が原因で発生します。

引用符は迷惑なので、シェル関数を試してみてください。

mysed() {
    sed 's/\s.*$// ; s/\(.*\)/\L\1/'
}
export -f mysed

parallel -a oldfile.txt -k --block -1 --pipe-part mysed > newfile.txt

おすすめ記事