![连接两个字符串会剪切字符串](https://linux22.com/image/70812/%E8%BF%9E%E6%8E%A5%E4%B8%A4%E4%B8%AA%E5%AD%97%E7%AC%A6%E4%B8%B2%E4%BC%9A%E5%89%AA%E5%88%87%E5%AD%97%E7%AC%A6%E4%B8%B2.png)
我从文本文件中提取两个数字字符串,并希望将它们组合起来创建一个新字符串。新字符串将是一个文件名。
这是文本文件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" }'