从文件中提取单词

时间:2011-11-29 19:08:22

标签: bash extract

如何从一个文件中提取所有单词,单行上的每个单词? 例如:

的test.txt

This is my sample text

输出:

This
is
my
sample
text

5 个答案:

答案 0 :(得分:5)

tr命令可以执行此操作...

tr [:blank:] '\n' < test.txt

这要求tr程序用新行替换空格。 输出是stdout,但可以重定向到另一个文件result.txt:

tr [:blank:] '\n' < test.txt > result.txt

答案 1 :(得分:1)

这里有明显的抨击线:

for i in $(< test.txt)
do
    printf '%s\n' "$i"
done

编辑更短:

printf '%s\n' $(< test.txt)

这就是它的全部内容,不包括任何特殊的(可悲的)案例(并且处理多个后续的单词分隔符/前导/尾随分隔符是通过“做正确的事”(TM))。您可以使用$ IFS变量调整单词分隔符的概念,请参阅bash手册。

答案 2 :(得分:0)

以上答案不能处理多个空格,而且非常好。另一种选择是

perl -p -e '$_ = join("\n",split);' test.txt

哪个会。 E.g。

esben@mosegris:~/ange/linova/build master $ echo "test    test" | tr [:blank:] '\n' 
test



test

但是

esben@mosegris:~/ange/linova/build master $ echo "test    test" | perl -p -e '$_ = join("\n",split);' 
test
test

答案 3 :(得分:0)

这可能对您有用:

# echo -e "this     is\tmy\nsample text" | sed 's/\s\+/\n/g'           
this
is
my
sample
text

答案 4 :(得分:0)

perl答案将是:

pearl.214> cat file1
a b c d e f pearl.215> perl -p -e 's/ /\n/g' file1
a
b
c
d
e
f
pearl.216>