比较来自世界各地的卖家的域名和 IT 服务价格

使用 sed 搜索和更换 bash for loop

我在文本文件中有大量单词进行替换。

此脚本向团队运行。 sed, 我得到的地方:

sed: 1: "*. js": 无效的团队代码 *

PS... Bash 不是我的优势之一 - 它不应该是美丽或有效的


cd '/Users/xxxxxx/Sites/xxxxxx'
echo `pwd`;

for line in `cat myFile.txt`
do
export IFS=":"
i=0
list=//

for word in $line; do
list[$i]=$word
i=$[i+1]
done

echo ${list[0]}
echo ${list[1]}

sed -i "s/{$list[0]}/{$list[1]}/g" *.js

done
已邀请:

二哥

赞同来自:

你正在使用 BSD sed /在下面 OS X/, 因此,国旗
-i

需要指示后缀应该是什么的论点。

此外,没有文件对应于全球
*.js

.

奔跑吧少年

赞同来自:

它看起来像一个简单的错字:


sed -i "s/{$list[0]}/{$list[1]}/g" *.js


它应该是:


sed -i "s/${list[0]}/${list[1]}/g" *.js


/就像
echo

线路上方/

窦买办

赞同来自:

所以,
myFile.txt

包含列表 from:to 替换,你经历了他们每个人。 你为什么不创建一个脚本
sed

来自这个文件?


cd '/Users/xxxxxx/Sites/xxxxxx'
sed -e 's/^/s:/' -e 's/$/:/' myFile.txt |
# Output from first sed script is a sed script!
# It contains substitutions like this:
# s:from:to:
# s:other:substitute:
sed -f - -i~ *.js


你的
sed

可能不喜欢
-f -

, 这意味着什么
sed

必须从标准输入中读取您的场景。 如果是这样,您可以创建类似于此的临时方案;


sed -e 's/^/s:/' -e 's/$/:/' myFile.txt >script.sed
sed -f script.sed -i~ *.js

诸葛浮云

赞同来自:

另一种方法,如果你不感觉非常自信 sed 你认为在一周内,忘记这些伏都教符号的意思是什么 IFS 更高效的方式:


IFS=":"
cat myFile.txt | while read PATTERN REPLACEMENT # You feed the while loop with stdout lines and read fields separated by ":"
do
sed -i "s/${PATTERN}/${REPLACEMENT}/g"
done


我看到的唯一陷阱 /也许更多/, 在某事实中,如果 PATTERN 或者 REPLACEMENT 包含斜地狱 ///, 他们会摧毁你的表情 sed.
您可以更改分隔符 sed 在一个不可打印的符号上,你应该是安全的。
无论如何,如果你知道你的内容 myFile.txt, 你可以简单地使用任何人。

要回复问题请先登录注册