2014-09-01 94 views
3

如何從文件裏逐行用空格閱讀內容,並執行該行的一部分如何從一個文件逐行讀取並執行內部內容

例如我已經在我的文件

以下
Hello world $(echo 9923,3443,434,344 | cut -d"," -f4) 
Hello world $(echo 9923,3443,434,344 | cut -d"," -f2) 
Hello world $(echo 9923,3443,434,344 | cut -d"," -f1) 

我預期的結果將是

Hello world 344 
Hello world 3443 
Hello world 9223 

我得到的是通過在while循環呼應

Hello world $(echo 9923,3443,434,344 | cut -d"," -f4) 
Hello world $(echo 9923,3443,434,344 | cut -d"," -f2) 
Hello world $(echo 9923,3443,434,344 | cut -d"," -f1) 

我的代碼將會像

while read LINE 
do 
    echo $LINE 
done < FILE 

我已經試過幾件事情喜歡使用反引號,雙引號,EVAL似乎沒有任何工作。

+2

在ksh中,'打印 - 「世界,你好$(回聲9923,3443,434,344 |切-d」, 「-F4)」 |而讀線;做eval echo $ line;完成「適用於我(作爲您的問題的近似值)。正如你所說,你已經使用了'eval'並且它不工作,是否有可能混合了操作系統並嘗試在Unix中處理MS = DOS生成的文件。如果是這樣,'dos2unix FILE'可能會有所幫助。結構良好的問題,請繼續發帖!祝你好運。 – shellter 2014-09-01 17:27:04

+0

@shelter你的解決方案也能正常工作,我在文件中有特殊字符,例如&。 – Yuvi 2014-09-02 16:26:14

回答

4

試試這個:

while read line; do 
    eval "echo $line"; 
done < FILE 
+0

它沒有工作我只得到第一部分「你好」,看起來像是因爲空間而折斷了幾行 – Yuvi 2014-09-01 17:37:44

+0

@Yuvi這很奇怪,因爲我用bash,zsh和plain sh來測試它。在所有情況下工作正常。 – 2014-09-01 17:52:58

+0

嗨,這工作正常什麼錯了,我正在使用&字符在該行。 – Yuvi 2014-09-02 16:06:09