我有一个10MB的文件,有ASCII文本,但以空字符结尾。
我使用cat myfile | tr -d '\000' | 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'
都没有效果。
感谢任何帮助。 感谢
答案 0 :(得分: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
修改强>
如果该脚本也用于从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