列の文字を数値に変換

列の文字を数値に変換

2列の文字を数字に変換したいです。

以下の例では、2列と3列の文字を数字に変更したいと思います。つまり、Ainto 1Binto 2Cinto3ですG4

最初の列には文字とを含めることもできますA。これらはBCGいいえ変更されました。

/列は()で区切られています<space><slash><space>

Id_animal / Column1 / Column2
ID01 / A / B
ID02 / B / A
ID03 / C / A
ID04 / A / G

希望の出力は次のとおりです。

Id_animal / Column1 / Column2
ID01 / 1 / 2
ID02 / 2 / 1
ID03 / 3 / 1
ID04 / 1 / 4

ベストアンサー1

  1. 列を 2 つのグループに切り捨てます。 1つは最初の列を含み、もう1つは2番目と3番目の列を含みます。

  2. 2番目のグループの文字を数字で反転します。

  3. すべてを再度貼り付けます。

コマンドラインから:

$ cat data
Id_animal / Column1 / Column2
ID01 / A / B
ID02 / B / A
ID03 / C / A
ID04 / A / G
ABCG / G / G

$ paste -d '/' <(cut -d '/' -f 1 data) <(cut -d '/' -f 2,3 data | tr 'ABCG' '1234')
Id_animal / 3olumn1 / 3olumn2
ID01 / 1 / 2
ID02 / 2 / 1
ID03 / 3 / 1
ID04 / 1 / 4
ABCG / 4 / 4

タイトルにボーナス番号が表示されます... :-)

おすすめ記事