我把这个单行内容放在一起,在不同的行上打印文件中的所有单词: sed -e's / [^ a-zA-Z] / \ n / g'test_input | grep -v“^ $”
如果test_input包含“我的自行车快速且干净”,则单行的输出将为:
我
自行车
是
快速
和
干净
我现在需要的是一个不同的版本,可以打印文本中的所有双字词,就像这样(仍然使用Bash):
我的自行车
自行车是
很快
快和
和干净
你知道怎么做吗?
答案 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}'