次のようなファイルがあるとしましょう。はい.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を使用)。