如何从一个文件中提取所有单词,单行上的每个单词? 例如:
的test.txt
This is my sample text
输出:
This
is
my
sample
text
答案 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>