首页 > 解决方案 > 将一行与其以下行进行比较

问题描述

我有一个名为的文件file.txt,其中包含以下格式的数据:

John
file
Abr
John
Tutu

我可以使用以下方式逐行读取文件:

#!/bin/sh
while read fl
do
echo $fl
done < file.txt

但我想用以下几行打印一行

我尝试了脚本:

#!/bin/sh
prev=""
while read fl; do
    prev="$fl"
done < file.txt

但是这个脚本只用连续的行来做事情。请提出一些更好的解决方案。

预期输出:

John  file
John Abr
John John
John Tutu

then
file  Abr
file John
file Tutu

then
Abr John
Abr Tutu

then
John Tutu

标签: linuxbashfor-loopawkwhile-loop

解决方案


awk 的空 RS 可能适合您的数据:

awk -F '\n' -v RS= '{for (i=1;i<NF;++i) for (j=i+1;j<=NF;++j) print $i,$j}' file

推荐阅读