处理文件为'交错'格式

时间:2012-03-26 17:40:26

标签: bash echo

我正在尝试编写一个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

值得注意的是,它需要一个“单词”的概念,为此,可以将其视为用空格表示。另外,在它里面......不是三个字的短语。最后,我想采取这样格式化的文件,并将它们组合在一起,但这一步让我感到高兴,因为它似乎需要一些能力来“告诉文件中的下一个是什么”,而且也不会超出范围在最后几个。

2 个答案:

答案 0 :(得分:2)

您可以使用awktr(加入多行):

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”,只要这三个都是非空的,你应该没事。