catコマンドから最初のX文字を取得しますか?

catコマンドから最初のX文字を取得しますか?

シェルスクリプトの変数として出力するテキストファイルがあります。しかし、最初の50文字だけが必要です。

?を試しましたが、cat ${filename} cut -c1-50最初の50文字よりはるかに多くの文字が表示されます。これは行を見つけることができますcut(100%はわかりません)、テキストファイルは長い文字列である可能性があります。これは実際には状況によって異なります。

catパイプを介してコマンドの最初のX文字を取得できるユーティリティはありますか?

答え1

head -c 50 file

これにより最初の50バイトが返されます。

このコマンドは、すべてのオペレーティングシステムで常に同じ方法で実装されるわけではありません。 LinuxとmacOSで動作する方法は次のとおりです。 Solaris(11) では、/usr/gnu/bin/ で gnu バージョンを使用する必要があります。

答え2

cutデータをパイプすると、コマンドが機能します。

cat ${file} | cut -c1-50 

または、無駄なcatの使用を避け、より安全にしてください。

cut -c1-50 < "$file"

上記のコマンドは、最初の50文字(またはcut実装に応じてバイト)を印刷します。各入力ラインごと。あなたが言ったように、ファイルが1つの大きな行になったら、期待どおりに動作するはずです。

答え3

dd status=none bs=1 count=50 if=${filename}

これにより最初の50バイトが返されます。

答え4

grep -om1 "^.\{50\}" ${filename}

その他のバリエーション(ファイルの最初の行)

(IFS= read -r line <${filename}; echo ${line:0:50})

関連情報