カンマ区切りのディレクトリのディレクトリ一覧 [閉じる]

カンマ区切りのディレクトリのディレクトリ一覧 [閉じる]

scpこんにちは、ある環境から別の環境にディレクトリをコピーしようとしています。ディレクトリが次\のように配置されているとします。dir1 dir2 dir3これで、scpコピーとしてそれを列としてリストする必要があります{'dir1','dir2',...}。引用符('')は生成できますが、カンマ(,)は生成できません。カンマを作成するのに役立ちますか?現在は生産のみできます{'dir1' 'dir2'...}。コンマを生成できません。この問題を解決するのに役立ちます。

scp -rp hdqamktg@hdstg-c01-edge-03:/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_comp /hdfs/app/dev/MarketingIt/warehouse/hddvmktg/mktg_b

(/hdfs/app/qa/MarketingIT/warehouse/mktg_bdo.db/mktg_contact_roles_compの下のディレクトリは、viewdate=2015-01-02 viewdate=2015-01-02 viewdate=2015-01-03などです。)

次のように動作します。scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator{'dir1','dir2'} $targetPath$pathSeperator

スクリプトから得られた出力は次のようになります。 "mktg_mbd.web_data_uri_sessionized"テーブルのデータファイルをコピーしています... {'viewdate=2016-04-02' 'viewdate=2016-04-03}

正常にコピーするには、{'viewdate=2016-04-02','viewdate=2016-04-03}である必要があります。

ターゲットディレクトリには、viewdate=2016-03-01 viewdate=2016-03-05 viewdate=2016-03-09 viewdate=2016-03-13 viewdate=2016-03-17 などがあります。

END_DATE_COMP=$(date -d $END_DATE +%s)
                            NEXT_DATE=$ST_DATE;
                            NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
                            DATE_LIST='{'
                            while [ $NEXT_DATE_COMP -le $END_DATE_COMP ]
                            do
                                      DATE_LIST=$DATE_LIST"'viewdate="$NEXT_DATE"'"
                                    NEXT_DATE=`date +%Y-%m-%d -d "$NEXT_DATE + 1 day"`
                                    NEXT_DATE_COMP=$(date -d $NEXT_DATE +%s)
                            done
                             DATE_LIST=$DATE_LIST | sed -i 's+ +,+g'
                            DATE_LIST=$(echo -n $DATE_LIST | head -c -1)
                            DATE_LIST=$DATE_LIST"}"
                            echo $DATE_LIST
                            #scp -rp $sourceUser@$sourceHost:$srcDir$pathSeperator$DATE_LIST $targetPath$pathSeperator
                            echo "copied the data for the partition viewdate="$DATE_LIST

したがって、日付ディレクトリのリストは{'dir1' 'dir2'}です。だからコンマを逃した。

答え1

ディレクトリ名にスペースがないとします。

echo foo bar baz | sed "s#[^ ]*#'&'#g;s/ /,/g;s/.*/{&}/"

出力:

{'foo','バー','バズ'}

関連情報