このコマンドは、sed $'s/[^[:print:]\t]//g'
私の.txtの各行をそのまま印刷します。
それは何のために使用されますか? Google では見つかりません。
たとえば、
sed $'s/[^[:print:]\t]//g' *.txt | wc -l
15909
cat *.txt | wc -l
15909
ファイルが編集されていません。このコマンドは何をしますか?
答え1
このsed
コマンドは、各入力行で印刷できないすべての文字とタブを削除します。行数は変更されません(改行は行数の一部ではないため削除されません)。コンテンツ行数)、文字数やバイト数は可能です。wc -c
バイト数とwc -m
文字数を再テストします。
正規表現は[^...]
単一文字と一致します(実際に要素を構成する)いいえ内部に[...]
。この場合は文字クラス[:print:]
とタブです。文字列の先頭の文字は、$
呼び出し前にリテラルタブにbash
置き換えられます。\t
sed
文字クラスは、[:print:]
現在のロケールで印刷できる文字、つまり英数字、句読点文字、およびスペースと一致します(ただし、制御文字であるタブ文字を除く)。
つまり、英数字、句読点、スペース、タブを除くすべての文字を削除します。
結果をファイルに書き戻すために(「所定の場所で編集」)、一部の実装には実装に依存sed
するオプション-i
があります。ただし、まず正しい出力を生成したことを確認してください。そうしないと、データが破損する可能性があります。sed -i
sed -i ''