(トレーニング目的で)フィルタリングするLinuxシステムにデータベース制御ファイルがあります。ただし、「ブロック型」文字を削除する正しい方法が見つかりません。
▒▒▒▒
▒▒▒▒
▒▒▒▒
▒▒▒▒▒
▒▒▒{
▒▒▒▒▒▒9
▒▒▒▒
▒▒▒▒▒
いくつかの方法を試しましたが、ブロック文字は削除されません。
258 strings o1_mf_d3rrgv0l_.ctl|grep -vE '▒'
259 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|?|+|(|)|<|>'
260 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|(|)|<|>'
261 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>'
262 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!'
263 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`'
264 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`|\$'
265 strings o1_mf_d3rrgv0l_.ctl|grep -v '[^[:print:]]'
266 strings o1_mf_d3rrgv0l_.ctl|grep -v '[[:print:]]'
267 strings o1_mf_d3rrgv0l_.ctl|grep '[[:print:]]'
268 strings o1_mf_d3rrgv0l_.ctl|grep -v '[[:cntrl:]]'
269 strings o1_mf_d3rrgv0l_.ctl|grep -v '\x{09}'
270 strings o1_mf_d3rrgv0l_.ctl|grep -vP '[^\x00-\x7f]'
271 strings o1_mf_d3rrgv0l_.ctl|tr -dc '\007-\011\012-\015\040-\376'
272 strings -1 o1_mf_d3rrgv0l_.ctl|tr -dc '\007-\011\012-\015\040-\376'
273 strings o1_mf_d3rrgv0l_.ctl|tr -dc '[:print:]\n\r'
274 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`|\$'
275 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`|\;|\:|\=|\$'
276 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`|\;|\:|\=|\$|\"'
277 strings o1_mf_d3rrgv0l_.ctl|grep -vE '@|\?|\+|\(|\)|\<|\>|!|\^|\%|\`|\;|\:|\=|\$|\"|\&|\#'
答え1
「正常に知られている」文字以外の文字を削除する方が簡単かもしれません。たとえば、出力を標準のASCII文字に制限するには、次のようにします。
tr -dc '[^ -~\012\015]'
これにより、SPACEと〜(文字126)の間の文字とCR / LF文字のみが保存されます。他のすべてのコンテンツは削除されます。
あるいは、スペースなどの他の文字で置き換えることもできます。
tr -c '[^ -~\012\015]' ' '
これにより、インデントのレベルが維持されます。
最後に、これを見ることもできます。ロケールたとえば、オペレーティングシステムではUTF8があると考えていますが、端末ではそうでない場合はこの内容が表示されることがあります。
したがって、LANG=C
コマンドを実行する前に設定すると、出力が変わる可能性があります。
LANG=C strings o1_mf_d3rrgv0l_.ctl
これはstrings
、コマンドが印刷可能文字と見なす内容を変更します。
答え2
興味深い旅の後、これがGNUに関するあなたの質問に答えることを願っていますgrep
。
サンプルfile.txt
:
▒▒▒▒
▒▒▒▒
▒▒▒▒
foo
bar
@▒^@^@▒▒^@^@^@^@^@^@^@^@^@^@<▒^@^@^@^@@^@^@^@^D~z{|}^@^@^▒^@^@^@^@^@^@^@^@^@^@
$ grep -v $(printf %b \\U2592) file.txt
foo
bar