テキストファイル内の特定の列の文字列値を分割する方法

テキストファイル内の特定の列の文字列値を分割する方法

Linuxシステムには2つの列を持つテキストファイルがあります。

  • 1列= id_no(ほとんど5桁、一部は6桁)。
  • 列2 = Genetic_markers(全長50674ビット)。
12345 0102010205
54322 2221110051
123456 1122011510

ファイルを次のように変更したいと思います。

 12345 0 1 0 2 0 1 0 2 0 5
 54322 2 2 2 1 1 1 0 0 5 1
123456 1 1 2 2 0 1 1 5 1 0
  1. 最初の列を数字に示すように右側に揃えるようにどのように変更できますか?

  2. 2番目の列の数字の間のスペースを変更する最も安定した方法を教えることができる人はいますか?コードの要素とその機能を説明してください。

ありがとう

ベストアンサー1

そしてperl

$ perl -lane 'printf "%6s %s\n", $F[0], join " ", split "", $F[1]' <your-file
 12345 0 1 0 2 0 1 0 2 0 5
 54322 2 2 2 1 1 1 0 0 5 1
123456 1 1 2 2 0 1 1 5 1 0

-lane(を使用する-nと、一度に1つのレコードを読み取り、wkは行をフィールドに分割し、レコードからine区切り文字を削除するため、-eレコードを使用して式を実行します。)次のように動作します。$_-aa@F-llperlawk

ここではprintf、空白を使用して最初のフィールドの長さを6に左詰め、次にスペースを使用してjoin2番目のフィールドを文字コンポーネントに分割します。

おすすめ記事