9267行を含むテキストファイルがあります。 「A」の後にスペース5つが来るのを見つけて、「A」の後にスペース5つが来るものに変えたいと思います。前と後すべての行に表示されますが、67列と88列の間にのみ表示されます。この列の外側のテキストは除外する必要があります。私はそれをうまく使う方法がわかりませんが、ここで役に立つことを願っていますsed
。awk
詳細:128ページPDFをスプレッドシートに変換しています。 PDFeditを使用してPDFをテキストファイルとして保存します。 LibreOfficeを使用して「ファイルのシート」を挿入する予定です。 PDFの列は見事に整列していますが、スプレッドシートの種類列はテキストファイル全体でまったく同じテキストファイルタイプの列にないため、これは困難であることがわかりました。 50行ごとに異なるPDFページに対応し、スプレッドシートタイプの列は一部のテキストファイルタイプの列の左右に移動できます。つまり、「シェルフ」のスプレッドシートタイプ列は、ファイルの一部ではテキストファイルタイプ列70から始まりますが、他の部分ではテキストファイルタイプ列76で始まります。これにより、LibreOfficeに「固定幅」を挿入しようとすると、スプレッドシートタイプの列が重なります。 LibreOfficeに列を定義する場所を知らせるために、検索と置換でスペースを追加して列をより広くしたいと思います。ファイル全体を見つけて置き換えると、最終的に不要な場所にスペースを入れます。
以下は非常に正確な例です。
Item Code Active Description Store Room Row Shelf Bin On Hand 38NUTZSL Y 3/8"-16 HEX ZINC NUT B 03 C 2 0 WELD-AL Y WELD, ALUM. ROD, STICK OR SPOOL A 01 B 2 68.25 08300 Y WASHER, 7/8 CASE HARDENED 29/32 ID,1 3/4 OD A 01 C 5 0
答え1
列区切り文字を変更してcolumn
コマンドを使用するより良い方法:
sed 's/ */;/g' file | column -ts';'
生産する:
Item Code Active Description Store Room Row Shelf Bin On Hand
38NUTZSL Y 3/8"-16 HEX ZINC NUT B 03 C 2 0
WELD-AL Y WELD, ALUM. ROD, STICK OR SPOOL A 01 B 2 68.25
08300 Y WASHER, 7/8 CASE HARDENED 29/32 ID,1 3/4 OD A 01 C 5 0