bash - 使用 AWK 将文本文件中的每个单词换行

标签 bash 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 来使用这些命令。命令中有什么我遗漏的吗?

最佳答案

另一种选择

echo "the fox jumped over the dog" | awk -v OFS="\n" '{$1=$1}1'

从文件中读取 awk ... inputfile

但是,我不确定它能否解决您的问题。如果你的 awk 坏了你可以试试 tr

echo ... | tr ' ' '\n'

会做。

关于bash - 使用 AWK 将文本文件中的每个单词换行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36291088/

相关文章:

bash - 在 AWK 表达式中使用 bash 变量

linux - 在 bash 中将人类可读的字节转换为字节

linux - 查找结果未附加到文本文件

bash - 将 rsync --stats 输出转换为 GB?

linux - 删除一个字符串和另一个字符串第一次出现之间的文本

bash - LINUX - grep 并注释掉来自 fstab 的行

bash - 如何将 `rm` 文件作为 awk 操作?

linux - 提示括号 (myenv)$ 似乎在最新的 conda 中消失了

linux - 在现有 screen 中创建新的 'screen'

git - 关于开发工具的两个配置文件(工作和家庭)