2012-08-25 57 views
0

我正在使用ps命令的輸出創建一個文件,如下所示。從bash中的文件中刪除隱藏的換行符

ps aux | grep ^apache | grep sbin/[h]ttpd | awk '{print $2" "$6}' > /root/psfile.tmp 

當你看看它讀取的文件如下。

[[email protected] ~]# tail /root/psfile.tmp 
16795 3184 
16796 3148 
16797 3148 
16799 3148 
16800 3148 
16801 3148 
16802 3148 
16803 3148 
16804 3148 
16805 3148 

然而,當我嘗試內處理這個for循環,它是讀一行兩行......例:......

for x in $(tail /root/psfile.tmp.test);do echo $x;done 
16795 
3184 
16796 
3148 
16797 
3148 
16799 
3148 
16800 
3148 
16801 
3148 
16802 
3148 
16803 
3148 
16804 
3148 
16805 
3148 

我需要的迭代同時顯示數字在一行......爲什麼這樣做,我該如何解決它?

謝謝!

+7

有沒有 「隱藏的換行符」 的文件中。相反,'for'正在被空白分割。 – chrisaycock

回答

4
while read one two 
do 
    echo "one: $one" 
    echo "two: $two" 
done < psfile.tmp.test 

while read line 
do 
    echo "line: $line" 
done < psfile.tmp.test 
0

使用IFS=$'\n'運行循環之前。

0

你可以這樣做:

tail /root/psfile.tmp.test | while read -r a b ; do 
    echo "a: $a b: $b" 
done 

保持你的代碼按並設置IFS$'\n'使上唯一的新線環分裂 - 默認情況下,它分裂的任何空白。