2つの文字列を連結すると、文字列が切り捨てられます。

2つの文字列を連結すると、文字列が切り捨てられます。

テキストファイルから2つの数値文字列を抽出し、それらを組み合わせて新しい文字列を作成したいと思います。新しい文字列はファイル名になります。

これはテキストファイルですdates.dat

378464,2015-01-31
1019348,2015-03-31
1019342,2015-03-31
1019347,2015-03-31
1019349,2015-05-11

私のシェルスクリプト:

while IFS=, read line
do
    IFS=',' read -r id date <<< "$line"
    filename="${date}-${id}.xml"
    echo $filename
done < "dates.dat"

私が見るのは3784641-31 1019348-31 1019342-31 1019347-31 1019349-11。しかし、私は2015-01-31-378464.xml待つことを期待しています。

答え1

.xml入力のコンマをダッシュ​​に置き換え、2つのフィールドを置き換えて末尾に追加したいようです。これは、次のコマンドを使用して簡単に実行できますawk

$ awk -v FS=',' -v OFS='-' '{ print $2, $1 ".xml" }' dates
2015-01-31-378464.xml
2015-03-31-1019348.xml
2015-03-31-1019342.xml
2015-03-31-1019347.xml
2015-05-11-1019349.xml

入力ファイルにDOS行の終わりがある場合は、まず入力を送信してくださいtr

$ tr -d '\r' <dates | awk -v FS=',' -v OFS='-' '{ print $2, $1 ".xml" }'

関連情報