我試圖使用AWK將新文本文檔中的每個單詞放在新行上。我真的不知道如何使用AWK,但是我發現了一些可以解決我的問題的命令。我試過下面的命令:使用AWK將文本文件中的每個單詞放在新行上
$ awk '{ for (i = 1; i <= NF; i++) print $i }' input.txt > output.txt
和
$ awk '{c=split($0, s); for(n=1; n<=c; ++n) print s[n] }' input.txt > output.txt
然而,這兩個命令具有相同的效果,這是所有的空間都被刪除。
爲了清楚起見,可以說input.txt中包含文本:
The fox jumped over the dog
output.txt中應包含:
The
fox
jumped
over
the
dog
然而output.txt中包含:
Thefoxjumpedoverthedog
我在Windows 7上使用Cygwin來使用這些命令。在命令中是否有我缺少的東西?
這不是在標準awk中平臺可重複性。也許你的Awk打印Unix行結束,你用來檢查文件的工具不知道該如何處理它們? Awk腳本沒問題;如何讓他們在你的平臺上正確運行是這裏的主題,但這不是一個真正的編程問題。 – tripleee
@tripleee謝謝,我認爲這將與Win/Unix系統之間的兼容性。 – hjalpmig
啊,Windows和Unix的兼容性,是的。試試'cat -vet文件'。如果你在行尾看到'^ M $',使用'dos2unix file'來轉換爲unix格式。 (或者如果我誤解了你的數據的「方向」,還有'unix2dos文件'。祝你好運。 – shellter