Linux bash - 将文件分成2个字的术语

时间:2010-06-21 16:26:13

标签: bash

我把这个单行内容放在一起,在不同的行上打印文件中的所有单词: sed -e's / [^ a-zA-Z] / \ n / g'test_input | grep -v“^ $”

如果test_input包含“我的自行车快速且干净”,则单行的输出将为:

自行车

快速

干净

我现在需要的是一个不同的版本,可以打印文本中的所有双字词,就像这样(仍然使用Bash):
我的自行车
自行车是 很快 快和
和干净

你知道怎么做吗?

5 个答案:

答案 0 :(得分:1)

将word文件传输到此脚本的标准输入。

#! bash
last_word=""
while read word
do
  if [ $last_word != "" ] ; then
      echo $last_word $word
  fi
  last_word=$word
done

答案 1 :(得分:1)

这也有效:

paste  <(head -n -1 test.dat) <(tail +2 test.dat)

答案 2 :(得分:1)

为此使用awk,不需要任何其他内容

$ echo "My bike is fast and clean" | awk '{for(i=1;i<NF;i++){printf "%s %s\n",$i,$(i+1) } }'
My bike
bike is
is fast
fast and
and clean

答案 3 :(得分:0)

这可能需要GNU sed并且可能有一种更简单的方法:

sed 's/[[:blank:]]*\<\(\w\+\)\>/\1 \1\n/g; s/[^ ]* \([^\n]*\)\n\([^ ]*\)/\1 \2\n/g; s/ \n//; s/\n[^ ]\+$//' inputfile

答案 4 :(得分:0)

到你的命令添加:

| awk '(PREV!="") {printf "%s %s\n", PREV, $1} {PREV=$1}'