现在假设有一句话 print(“*”) *号为要替换的内容
我这里有一个文件 文件里有很多数字 123,124,125,126,127
需要一个脚本,自动把123替换*然后生成一个.xml的文件夹,以此类推。
我没有太明白什么意思,你最后得到的是文件夹里面都是.xml文件,每个xml文件里面的内容都是这样吗?
# 123 代替 *
print("123")
# 124 代替 *
print("124")
方案如下:
file.sh脚本:
#!/bin/bash
while read line
do
content='print("*")'
echo ${content//\*/${line}} > $line.xml
done < data.txt
data.txt文件:
123
124
125
126
127
执行sh file.sh后,内容如下:
file.sh脚本:
#!/bin/bash
while read line
do
content='print("*")'
echo ${content//\*/${line}} > $line.xml
done < data.txt
data.txt文件:
123
124
125
126
127
执行sh file.sh后,内容如下:
你这需求有点奇葩啊,说的还不清晰,我先梳理一下,就算不是改改就行。
1. 有一个数据源文件,里面是用逗号分隔的元素。
2. 有一个模板字符串,使用*作为占位符(有且只有一个占位符)。
3. 循环使用数据源中的元素填充模板得到目标字符串。
4. 循环使用【数据源中的元素.xml】作为文件名,目标字符串作为文本内容生成一个文件放到指定目录下。
#数据源
echo '123,124,125,126,127,128 ' > ds.txt
#数据源字符串
DS=$(cat ds.txt)
#模板
TMP='print("*")'
#输出文件夹
OUT='./out'
mkdir -p ${OUT}
#数据数组
DTA=(${DS//,/ })
#生成文件
for DT in ${DTA[@]}; do echo ${TMP//\*/${DT}} > ${OUT}/${DT}.xml; done;
您好,我是问答小助手,你的问题已经有小伙伴为您解答了问题,您看下是否解决了您的问题。
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~