我是shell脚本的新手,我正在尝试使用awk分割字符串后为for循环中的每个元素运行sed replace命令
# !/bin/sh
SCRIPT_DIR=`pwd`
TEXT_FIELD=$SCRIPT_DIR/Field/textField
FIELDS="code-text name-text"
echo "$FIELD" | awk '{len = split($0,t," ")
for (i=1; i<=len; i++) {
"sed -i 's/inputPlaceholder/t[i]/g' $TEXT_FIELD"
} }'
当我运行它时:$ sh code_sample.sh
它不是抛出错误但不能正常工作。
修改
我的目标是将code-text name-text
读入array[1] = "code-text"
,array[2] = "name-text"
。
然后for循环将逐个读取,并将每个项目替换为给定文件中的inputPlaceholder
字符串。
示例:
输入:FILED =“code-text name-text”
输出(在文件中):text-&gt; create(“inputPlaceholder”)变为text-&gt; create(“code-text”)并保存为code.txt并使用相同的逻辑将name-text保存到name 。文本。
答案 0 :(得分:0)
你可以通过system("sed ....")
电话来做,但这听起来像个糟糕的主意。例如,您必须确保替换文本在sed表达式中使用是安全的,否则命令会因某些输入而失败。
此外,您还必须转义引号字符,因为通过编写sed -i '...
,您将突破awk文本引用。
如果您实际上正在进行这样的文字处理,我会推荐比sh更先进的东西。 Python,Perl,Ruby和其他许多人都可以做到这一点。
如果你想要一些特定的例子,你必须说明你希望脚本做什么 - 当前的例子被严重破坏,我不确定预期的输入/输出/动作是什么。