我正在尝试编写一个bash脚本,它返回文件的所有三个单词短语,后跟换行符。一个例子如下:
input : This is a file with words in it
output:
this is a
is a file
a file with
file with words
with words in
words in it
值得注意的是,它需要一个“单词”的概念,为此,可以将其视为用空格表示。另外,在它里面......不是三个字的短语。最后,我想采取这样格式化的文件,并将它们组合在一起,但这一步让我感到高兴,因为它似乎需要一些能力来“告诉文件中的下一个是什么”,而且也不会超出范围在最后几个。
答案 0 :(得分:2)
您可以使用awk
和tr
(加入多行):
tr '\n' ' ' < file.txt | awk '{ for(i=3; i<=NF; i++) { print $(i-2) " " $(i-1) " " $i }}'
答案 1 :(得分:-1)
如果文件不是“大”,您可以使用for
循环显示其中的字词:
for word in $(cat input.txt); do echo $word; done
如果文件太大,您可以使用read
一次读取一行,然后for
迭代该行中的字词:
while read line; do for word in $line; do echo $word; done; done < input.txt
对于循环体,只需跟踪“last_word”和“word_before_that”,只要这三个都是非空的,你应该没事。