テキストファイルから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" }'