2016-11-23 10 views
-1

ASCIIテキストを持ち、ヌル文字で終わる10MBのファイルがあります。 私はこれらのヌル文字を取り除くのにcat myfile | tr -d '\000' | lessを使用します。lessで開くときヌル文字を切り捨てる

$LESSOPENまたはlessopen.shで自動的に行う方法をお探しの場合は、 私はlessopen.shに追加しようとしました:

if grep -q -Pa '\x00' $1; then 
      tr -d '\000' $1 
    fi 

そしてexport LESSOPEN='| tr -d "\000" | lesspipe.sh %s'

どちらも作品を。

何か助けていただければ幸いです。 おかげ

答えて

2

なぜ単に:

#!/bin/bash 
# lessopen.sh 
# Use: lesopen.sh FILE 

# Parameter must be a readable file 
[ ! -r "$1" ] && { echo "File '$1' doesn't exist or cannot be read!">&2; exit 1; } 

tr -d '\000' < "$1" | less 

EDIT

スクリプトはstdinからも読み取りのために使用されることを意図されている場合は、このバージョンがそれを行います。

#!/bin/bash 
# lessopen.sh - deletes all null bytes (0x00) and executes less command with result 
# Use: 
# $ lessopen.sh FILE 
# $ lessopen.sh < FILE 
# $ cmd | lessopen.sh 

INPUT="$1" 
if [ -n "$INPUT" ];then 
    # Parameter must be a readable file 
    [ ! -r "$INPUT" ] && { echo "File '$INPUT' doesn't exist or cannot be read!">&2; exit 1; } 
    tr -d '\000' < "$INPUT" | less 
else 
    tr -d '\000' | less 
fi 
+0

less(例えば 'less myfile'など)を使ってファイルを開くとうまく動作します。しかし、less(例えば 'cat myfile | less')でパイプを通すとうまくいきません –

+1

' lessopen.sh myfile'と 'cat myfile | lessopen.sh'を実行すると、スクリプトは 'stdin'から読み込む準備ができていなければなりません。私の答えを見て、入力として 'stdin'を受け入れるように変更しました。 – WPomier

関連する問題