sed を使用して複数のファイルの多くの行を置き換えていますが、問題が発生しました。配列を使用して sed に多くのコマンドを与えますが、検索にいくつかのスペースを含めて、sed フォームの検出と削除が多すぎる行を防ぐ必要があります。コード:
( IFS='|'; sed -rie "/ ${points_r[*]};/d" io_points.dat4; )
2 つのスペースと「;」削除する必要のない行を削除しないようにするためです。これらの行は削除されたので、これも試しました:
( IFS='|'; sed -rie "/\s\{2,\}${points_r[*]};/d" io_points.dat4; )
私の bash バージョンは 3.2.25 で、sed バージョンは 4.1.5 です。この配列を使用して一致を検索するにはどうすればよいですか?ただし、検索にスペース (および「;」) を含めますか? どんな助けでも大歓迎です!
編集:サンプル入力
2; 14; 1;I; 0; 1; 0; 66
3; 14; 1;I; 0; 1; 0; 141
4; 14; 1;I; 0; 1; 0; 23
5; 14; 1;I; 0; 1; 0; 26
7; 14; 1;I; 0; 1; 0; 0
points_r には 3 4 と 5 の数字が含まれています。3 を含む行を削除する必要があります。4; そして5; (最初の列) 2 ではありません。または7; (2 列目に 4 が含まれています)
出力は次のようになります。
2; 14; 1;I; 0; 1; 0; 66
7; 14; 1;I; 0; 1; 0; 0