私が実行したいコマンドは次のとおりです。
mdb-tables davidoff.mdb | xargs -I {} mdb-export davidoff.mdb {} > {}.csv
mdb-exportは2つのパラメータを使用し、2番目のパラメータをパイプしようとします。その後、それぞれをファイルに書きたいです。
これはうまくいきません。削除しても引き続き> {}.csv
エラーが発生します。
Error: Table {} does not exist in this database.
シェルはzsh
パート1の出力例:
% mdb-tables davidoff.mdb
anatomypiclink bugs bugseverity bugtype classifications Diseases docaccess docaccesstype docassignments docclassifications docdetails docnotes docpicturelink docqa docs doctype keypicturelink keywords links logons mediatype navdoclinks navimagelinks navstructures organs Paste Errors pictureclassifications pictures picturetype qub3_queries_que qub3_relations_rel qub3_settings_set quotes references sequencelinks sequences subDocType videos dictionarytable doclinks docstatus media docs_ExportErrors
テストケースとして私はこれを働かせることができました:
printf "1\n2\n3\n" | xargs -I touch {}
なぜreplstrを2番目の引数として使用できないのですか?
答え1
一部のシステムの一部のバージョンでは、パラメータxargs
に255バイトの制限があります。この場合は、マニュアルページのパラメータセクションでこれについて言及する必要があります-I
。引数がこの制限より大きい場合、プレースホルダは変わりません。mdb-tables
テーブル名のリストを500バイトの1行に出力します。
Quasímodoが述べたように、-d "\n"
パラメータを使用してテーブル名を別々の行に分割することもできます-1
。