2012-11-15 133 views
0

我正在將命令的輸出寫入bash文件。該命令逐漸生成輸出,並且我正在使用grep來檢索部分特定的行,並將其寫入文件。現在,該命令將所有行寫入文件。我希望文件在每次bash命令有一些輸出時被截斷,這樣文件中總是有一行。我怎樣才能達到這樣的效果?在Bash中截斷文件

我使用的命令是: 2>&1 zypper -x -n in geany | grep -o --line-buffered "percent=\"[0-9]*\"" | tee /var/log/oneclick.log

這將產生輸出像percent="10"等。每一次,只有一條線應在文件

+0

給出的'PS aux'答案似乎表明操作所需的串聯,而不是截斷。截斷意味着縮短。連接意味着加在一起。如果要累積多個結果,則操作是串聯而不是截斷。 – kbulgrien

+0

我需要截斷而不是連接。 'aux'命令是連接而不是截斷 – saurabhsood91

+0

然後請用你想要發生的事例來擴展你的問題。目前還不清楚你想完成什麼。 – kbulgrien

回答

1

中存在如果你需要覆蓋每行的文件:

2>&1 zypper -x -n in geany | 
grep -o --line-buffered "percent=\"[0-9]*\"" | 
while read line; do 
    echo "$line" > /var/log/oneclick.log 
    echo "$line" 
done 
+0

這工作完美,雖然有一個';'如果你把它全部放在一行上,那麼在完成 – saurabhsood91

+2

之前丟失。換行符與分號一樣,是一個命令分隔符 –