1つのセクションに基づいて一意の行を見つける

1つのセクションに基づいて一意の行を見つける

:特定の文字(たとえば)で行を分割し、その分割の一部に基づいて一意の行を見つける方法があるかどうか疑問に思います。

たとえば、次のものをパイプするとstdin

file1: line 4
file1: line 5
file1: line 6
file2: line 1
file2: line 2
file2: line 1
file53: line 67
file24: line 412

ファイルごとに1行だけ抽出する方法はありますか?たとえば、次のようになります。

file1: line 4
file2: line 1
file53: line 67
file24: line 412

または、より良い方法は次のとおりです。

file1
file2
file53
file24

ありがとう

答え1

これは、次のような一般的なユーティリティを使用して簡単に実行できます。

cut -d : -f 1 input.txt | uniq
  • cut入力ファイルからフィールドを抽出します。-d区切り文字(この場合はa :)を表し、-f 1最初のフィールドが抽出されることを示します。
  • uniq入力から重複した隣接行を削除する

答え2

すべての結果の形式は同じです(ファイルはディレクトリにあります)、src/次のものを使用できます。

cat input.txt | tr ':' '\n' | grep 'src/' | uniq

関連情報