GNU grepは、入力にLF文字が含まれていることを確認します。

GNU grepは、入力にLF文字が含まれていることを確認します。

私はデータファイルセットの内容をテストして、印刷可能文字と印刷されない文字からなるセットから1つ以上の文字が含まれていることを確認します。

最後の質問は、ファイルに改行文字が含まれているかどうかを検出することです。私のものGNU grep 3.0各入力にLFを含めるように宣言してください。なぜですか?

echo -n "test" | grep -UF -e $'\x0a'

どんなアイデアがありますか?暗黙的なEOL/EOF干渉があるようです。

ベストアンサー1

grepは行指向です。入力が改行で終わらない場合は、最後の改行(またはファイルの先頭)の後のテキストを行として扱います。

ライン指向プログラムは、バイナリファイルを直接操作するのには適していません。バイナリファイルに特に長い「ライン」があると、病理学的状態が発生することがよくあります。

代わりに、tr次の組み合わせを検討してくださいcmp

$ echo -n foo | tr -d -c $'\n' | cmp /dev/null - 
# no output and exits with status 0

$ echo foo | tr -d -c $'\n' | cmp /dev/null -
cmp: EOF on /dev/null which is empty
# exits with status 1

この方法は、最初の改行文字まで入力(バッファリングを含む)だけを読み取ることができるという利点もあります。

おすすめ記事