:
特定の文字(たとえば)で行を分割し、その分割の一部に基づいて一意の行を見つける方法があるかどうか疑問に思います。
たとえば、次のものをパイプすると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