GNU/Linux >> Linux の 問題 >  >> Linux

2 つのセット/ファイル間で一意の値を抽出する

あまり知られていないユーティリティの使用:

sort file1 > file1.sorted
sort file2 > file2.sorted
comm -1 -3 file1.sorted file2.sorted

これは重複を出力するので、1 3 の場合 file1 で 、しかし file2 で 2 、これはまだ 1 3 を出力します .これが望ましくない場合は、sort からの出力をパイプします。 uniq まで ファイルに書き込む前に:

sort file1 | uniq > file1.sorted
sort file2 | uniq > file2.sorted
comm -1 -3 file1.sorted file2.sorted

GNU coreutils パッケージには、あらゆる種類のテキスト操作を可能にする多くのユーティリティがあります。


$ awk 'FNR==NR {a[$0]++; next} !($0 in a)' file1 file2
6
7

コードの仕組みの説明:

  • ファイル 1 に取り組んでいる場合は、表示されるテキストの各行を追跡します。
  • ファイル 2 で作業していて、行のテキストが表示されていない場合は、それを印刷してください。

詳細の説明:

  • FNR 現在のファイルのレコード番号です
  • NR すべての入力ファイルからの現在の全体的なレコード番号です
  • FNR==NR file1 を読み取っている場合にのみ true
  • $0 現在のテキスト行です
  • a[$0] キーが現在のテキスト行に設定されたハッシュです
  • a[$0]++ 現在のテキスト行を見たことを追跡します
  • !($0 in a) 行のテキストを見ていない場合にのみ true
  • 上記のパターンが true を返す場合、テキスト行を出力します。これは、明示的なアクションが指定されていない場合の awk のデフォルトの動作です

Linux
  1. 2つのファイルを2つの列に印刷しますか?

  2. Ssh –保護されたファイルをサーバー間で1行にコピーしますか?

  3. 2つのファイル間の共通行?

  1. Awk‘{print $ 1 + 0.45“” $ 2“” $ 3}’ File1> File2とは何ですか?

  2. PythonでMSワードファイルからテキストを抽出する

  3. 日付範囲内で作成されたファイルを検索

  1. GNU/Linux における 2 つのファイル (行のセットとして) のデカルト積

  2. データファイルで一意の値を見つける

  3. Linux での SFX ファイルの抽出