ファイルの1行を後続の行と比較します。

ファイルの1行を後続の行と比較します。

次のようなファイルがあるとしましょう。はい.txtこれには、次の形式のデータが含まれます。

1 John
2 Crema
3 Abraham
1 John

以下を使用してファイルを1行ずつ読み取ることができます。

while read p
do
echo $p
done <sample.txt

重複除外やパターンマッチングなどの複数のタスクを実行できるように、特定の行を後続の行と比較する方法はありますか?比較操作を完了するには、どのような追加コンテンツを追加する必要がありますか?

答え1

prev=""
while read p; do
    # compare p with prev somehow
    prev="$p"
done <sample.txt

これにより、直接隣接する2本の線を比較することができます。ファイルから遠い行を比較したい場合は、より複雑になり、シェルで最もよく書かれていない可能性があります(詳細は操作によって異なります)。

答え2

awk '{if (NR==1) STR=$0; if ($0==STR) print NR}' file

この例では、行 1 を比較基準として使用します。 NR==1 を比較したい行番号に変更してください。

選択した行を含む、選択した行と一致するすべての行番号が印刷されます。あなたの例に適用すると、次のように印刷されます。

1
4

行番号があれば、sedで削除できます。

sed -i '4d' file

または、この行で別の操作を実行します(たとえば、NR =行番号で追加のawkを使用)。

関連情報