(時々)タブ区切りデータの複数行のテキストファイルを持っています。ファイルを一目で確認できるようにファイルを出力したいので、各行の最初の80文字だけを表示したいと思います(各行の最初に重要なものを置くようにテキストファイルを設計しました)。
catを使用してファイルの各行を読み取り、パイプ内の次のコマンドに各行を送信できると思いました。
cat tabfile | cut -c -80
しかし、それは壊れているように見えました。あちこち試してみたところ、grepは機能しているように見えましたが、機能していないことがわかりました(ファイルのすべての行に80文字以上あるわけではありません)。タブは、カットによって1文字として数えられるようです。
私は試した:
cat tabfile | tr \t \040 | cut -c -80
空白の読みやすさを排除することで、データを少し壊してしまいます。しかし、それはうまくいきませんでした。どちらもしませんでした:
cat tabfile | tr \011 \040 | cut -c -80
多分私はtrを間違って使用していますか?以前にtrで問題があり、複数のスペースを削除したい(このマシンでアクセスできるバージョンのtrには、複数の文字を縮小するための-sオプションが表示されます-もっと操作する必要があるかもしれません)
私がいじったら、perl、awk、sed、またはこれを行うための何かを使うことができると思います。
ただし、(POSIX?)通常のコマンドを使用するソリューションが欲しいので、可能な限り移植性があります。最終的にtrを使用する場合、おそらく最終的にタブを文字に変換して、計算を行い、計算を省略してから、出力用にそれらの文字をタブに戻すことになるでしょう。
1行である必要はなく、コマンドラインで直接入力する必要もありません。スクリプトで問題ありません。
タブファイルの詳細:
タブを使用してフィールドを分割します。いつか他のプログラムにデータをインポートしたい場合があるからです。そのため、コンテンツの間にタブが1つしかない傾向があります。ただし、プレーンテキストファイルを読みやすくするために、タブを使用して縦の列に配置しています。つまり、一部のテキストでは、次のフィールドを上下に並べてタブが機能する場所に到達するまで、コンテンツの最後にスペースを埋め込みます。
DarkTurquoise#00CED1海、空、手漕ぎボート MediumSpringGreen#00FA9A木の魔法に便利 ライム#00FF00春のニワトリとfru $でのみ使用
pr
からcoreutils
:pr -1 -t -l200 -W80 file
。-l
必要に応じて、ページの長さ(の後の数)を増減します。