一連の文字(数字)をスペースで区切る方法

一連の文字(数字)をスペースで区切る方法

私は次のような状況にあります。

my data:

ID01 120120101
ID02 101010101
ID03 210210210
ID04 505052120

私が望むデータは次のとおりです。output

ID01 1 2 0 1 2 0 1 0 1
ID02 1 0 1 0 1 0 1 0 1
ID03 2 1 0 2 1 0 2 1 0
ID04 5 0 5 0 5 2 1 2 0

だから私は2番目の列に現れるすべての数字を分離したいと思います(私のデータ)、しかし最初の列はそのままにしておく必要があります。

そのために2つのファイルを作成してみました。 1つはID($ 1-file1)、もう1つはスペースで区切られたシーケンス(file2)です。試した後:

sed -i -- 's//\t/g' file2

ただし、次のエラーが発生します。

sed: -e expression #1, char 0: no previous regular expression

この問題をどのように解決できますか?

ベストアンサー1

どうですか?

perl -alne 'print join " ", $F[0], split("", $F[1])' data
ID01 1 2 0 1 2 0 1 0 1
ID02 1 0 1 0 1 0 1 0 1
ID03 2 1 0 2 1 0 2 1 0
ID04 5 0 5 0 5 2 1 2 0

(完全に)タブ区切りの出力が必要な場合は、次のように変更します。

perl -alne 'print join "\t", $F[0], split("", $F[1])' data

または、ID2番目のフィールドの数字の後にタブを保持しますが、スペースで区切るには、

perl -alne 'print join "\t", $F[0], join " ", split("", $F[1])' data

おすすめ記事