在Awk split中运行Sed命令(for loop)

时间:2016-06-21 17:24:10

标签: linux bash awk sed sh

请原谅我的英语。

我是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 。文本。

1 个答案:

答案 0 :(得分:0)

你可以通过system("sed ....")电话来做,但这听起来像个糟糕的主意。例如,您必须确保替换文本在sed表达式中使用是安全的,否则命令会因某些输入而失败。

此外,您还必须转义引号字符,因为通过编写sed -i '...,您将突破awk文本引用。

如果您实际上正在进行这样的文字处理,我会推荐比sh更先进的东西。 Python,Perl,Ruby和其他许多人都可以做到这一点。

如果你想要一些特定的例子,你必须说明你希望脚本做什么 - 当前的例子被严重破坏,我不确定预期的输入/输出/动作是什么。