2016-06-21 37 views
1

請原諒我的英文。在Awk中運行Sed命令(for循環)

我是新來的shell腳本,我試圖運行桑達替換命令對每個元素中的使用分割字符串AWK

# !/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-textarray[1] = "code-text"array[2] = "name-text"

然後,for循環將逐個讀取,並將每個項目替換爲給定文件中的inputPlaceholder字符串。

實施例:

輸入:FILED = 「代碼文本名稱文本」

輸出(在文件中):基於文本>創建( 「inputPlaceholder」)變爲基於文本>創建(「代碼-text「)並保存爲code.txt,並使用相同的邏輯將name-text保存爲name.txt。

+0

不工作怎麼樣?舉例說明預期與實際產出的關係。順便說一句,你的英語很好,所以你被赦免了。 –

+0

不。編號外殼是調用工具的環境。 Awk是處理文本的工具。猜猜哪一個適合調用sed(提示:這不是awk!)。您的問題包括簡潔,可測試的示例輸入和預期輸出,所以我們可以幫助您做任何你正在嘗試以正確的方式執行(不涉及awk調用sed!)。 –

+0

我已更新我的問題。請看一下。謝謝 –

回答

0

你可以用system("sed ....")來打電話,但這聽起來像一個可怕的想法。例如,您必須確保替換文本在sed表達式中可以安全使用,否則命令會失敗,無法執行某些輸入。

此外,你將不得不逃離引號字符,因爲通過編寫sed -i '...你打破了awk文本引用。

如果你真的在做這樣的文本處理,我會推薦比sh更高級的東西。 Python,Perl,Ruby和許多其他人都可以做到這一點。

如果你想一些具體的例子,你就不得不說你能指望什麼腳本做 - 當前例子被嚴重破壞,我不知道預期的輸入/輸出/動作是什麼。

+0

我已更新我的問題。請看一下。謝謝。 –

+0

因爲我的系統大部分使用sh文件,比如start.sh,stop.sh。所以我想用sh來方便。 –

+0

@RobustTran你很好,使用shell來調用awk,然後使用awk來完成文本處理。這就是兩種工具都被設計來做的很好。 –