连接两个字符串会剪切字符串

连接两个字符串会剪切字符串

我从文本文件中提取两个数字字符串,并希望将它们组合起来创建一个新字符串。新字符串将是一个文件名。

这是文本文件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" }'

相关内容