【发布时间】:2013-09-01 20:14:17
【问题描述】:
在 bash 脚本中,我想在一个数组上循环并每次执行一个 sed 命令。 基本上,我想做这样的事情:
名称=(“彼得”“胡安卡洛斯”“艾米丽”) ${names[*]} 中的名称 做 sed 's/[[:space:]]*{'"$name"'}/'"$name"'/g' "$file" 完毕我错过了什么?
编辑: 我进一步解释我的意图:
我的来源是一个 tex 文档,其中包含以下行:
\begin{cue}
{Peter}
{You won !}
\end{cue}
\begin{cue}
{Juan Carlos}
{Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vitae ipsum hendrerit, gravida est eget, tincidunt sem. Maecenas dapibus nibh commodo, pulvinar lorem at, egestas leo.}
\end{cue}
没关系,我想要一个格式如下的 .csv 文档
“彼得”;“你赢了! “Juan Carlos”;“Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nunc vitae ipsum hendrerit, gravida est eget, tincidunt sem. Maecenas dapibus nibh commodo, pulvinar lorem at, egestas leo。”感谢您的回答!
【问题讨论】:
-
我们不确定。你到底想做什么?
-
不知道你的目标是什么,但是看看你的 sed 脚本,我注意到你有很多不同类型的引号。您可能需要添加一些反斜杠。
sed "s/[[:space:]]*{'\"$name\"'}/...你明白了。 -
另外
sed 's/[[:space:]]*\(Peter\|Juan Carlos\|Emily\)/\1/g' "$file"将在没有循环或重复输出的情况下执行此操作。