텍스트 파일에서 두 개의 숫자 문자열을 추출하고 이를 결합하여 새 문자열을 만들고 싶습니다. 새 문자열은 파일 이름이 됩니다.
이것은 텍스트 파일입니다 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
입력의 쉼표를 대시로 바꾸고 두 필드를 바꾸고 끝에 추가하려는 것 같습니다 . 이 작업은 다음 명령을 사용하여 쉽게 수행할 수 있습니다 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" }'