Bash SED,使用变量并与数组一起使用
我尝试使用以下变量在directory Server_Upload中的多个文件上运行sed:Bash SED,使用变量并与数组一起使用,bash,sed,Bash,Sed,我尝试使用以下变量在directory Server_Upload中的多个文件上运行sed: AB${count} 对应于我制作的一些变量,如下所示: echo " AB1 = 2010-10-09Three " echo " AB2 = 2009-3-09Foo " echo " AB3 = Bar " 这些对应于master.ta中包含一个单词的每一行,需要在服务器上传的所有文本文件中进行更改 如果你明白我的意思。。。太好了,我已经尽力解释了,但是如果你仍然生气的话,我
AB${count}
对应于我制作的一些变量,如下所示:
echo " AB1 = 2010-10-09Three "
echo " AB2 = 2009-3-09Foo "
echo " AB3 = Bar "
这些对应于master.ta中包含一个单词的每一行,需要在服务器上传的所有文本文件中进行更改
如果你明白我的意思。。。太好了,我已经尽力解释了,但是如果你仍然生气的话,我会再试一次,因为我发现很难表达我的意思
cd Server_Upload
for fl in *.UP; do
mv $fl $fl.old
done
count=1
saveIFS="$IFS"
IFS=$'\n'
array=($(<master.ta))
IFS="$saveIFS"
for i in "${array[@]}"
do
sed "s/$i/AB${count}/g" $fl.old > $fl
(( count++ ))
done
cd服务器\u上传
对于fl in*.UP;做
mv$fl$fl.old
完成
计数=1
saveIFS=“$IFS”
IFS=$'\n'
数组=($($fl
((count++)
完成
它运行,没有给我任何错误,但它没有做我想要的,所以有什么想法吗?您的循环应该如下所示:
while read i
do
sed "s/$i/AB${count}/g" $fl.old > $fl
(( count ++ ))
done < master.ta
当我读的时候
做
sed“s/$i/AB${count}/g”$fl.old>$fl
((count++)
完成
我看不出有什么理由使用数组或类似的东西。这对您有用吗?看起来您的
sed
命令依赖于第一个for
循环内部的$fl
,即使sed
行在for
循环外部。如果您在sed
的系统中编辑(-i
选项),您可以执行以下操作:
count=1
while read i
do
sed -i'.old' -e "s/$i/AB${count}/g" Server_Upload/*.UP
(( count ++ ))
done < master.ta
count=1
当我读书的时候
做
sed-i'.old'-e“s/$i/AB${count}/g”服务器上传/*.UP
((count++)
完成
(这是整个脚本,其中也包含了Patrick的答案。)这应该用文本
ABn
替换master.ta
第n行在任何*.UP文件中出现的每一个文本。我不太清楚你想做什么,但我相信你想要的是:
(未经测试)
做
eval repl=\$AB${count}
...
如果有一个变量$AB3和一个变量$count,$AB${count}是$AB和$count的串联(因此,如果$AB为空,则与$count相同)。您需要使用eval来获取$AB3的值。如果您将第一个done
语句从它所在的位置移动到第二个done
之后,是否会有所帮助?下次,显示您获得的文件示例。以及您希望的输出是什么样子。如果不解释使用示例需要什么,很难说出您是一个什么样的人实际上,即使你发布了你的代码,你的代码可能是错误的。
do
eval repl=\$AB${count}
...