0
我嘗試檢索文件結果的第1列,並把此列名爲結果2文件,但問題是我的劇本只寫最後線結果:在bash中如何在下一行回顯到文件中?
for line in $(cat results | cut -d" " -f1);
do echo -e "$line">results2;
done
我嘗試檢索文件結果的第1列,並把此列名爲結果2文件,但問題是我的劇本只寫最後線結果:在bash中如何在下一行回顯到文件中?
for line in $(cat results | cut -d" " -f1);
do echo -e "$line">results2;
done
你可以做你想做的事,這樣的外殼:
while read -r col1 rest
do
printf '%s\n' "$col1"
done <results> results2
...但它會做很多更有意義,只是這樣做:
cut -d' ' -f1 results > results2
你的腳本的問題是你在循環內部使用>
,它會截斷文件並重新打開它以寫入每一次迭代。您可以通過將整個循環重定向到文件來解決此問題,但正如我所示,最好的方法是重定向cut
的輸出。
要讀取shell中的行,請使用while read
循環; don't read lines with for
。但是,請記住,shell並非設計用於有效執行此任務,而這正是標準工具(如cut
)的用途。
注意你正確的做法,只是你每次都用'>'截斷文件。這就是爲什麼你最終只有最後一行。相反,使用'>>'。 – fedorqui
awk'{print $ 1}'results> results2可以滿足您的需求 – Fabich