Заменить, начиная со второго столбца - PullRequest
0 голосов
/ 06 июня 2018

Хорошо, у меня есть следующий файл:

12721   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12722   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12734   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12753   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2
12756   2 2 2 1 1 2 1 2 1 1 1 2 2 1 1 2 1 2 1 1 2

Мне нужно удалить пробелы, начиная со второго столбца, чтобы мой файл выглядел так:

12721 222112121112211212112
12722 222112121112211212112
12734 222112121112211212112
12753 222112121112211212112
12756 222112121112211212112

Iпробовал эту команду для замены:

sed '1,$s/ //g' snpdata > snpdata1

она не работала, и я получил ее:

12721222112121112211212112
12722222112121112211212112
12734222112121112211212112
12753222112121112211212112
12756222112121112211212112

какие-либо предложения по замене, начиная со второго столбца?

Примечание: мой исходный набор данных имеет тысячи столбцов и строк.

Ответы [ 3 ]

0 голосов
/ 06 июня 2018

Использование sed:

 sed 's/ //g;s/\([0-9]\{5\}\)\([0-9]\+\)/\1 \2/' file

, где первая команда удаляет все пробелы, а вторая команда группирует цифры

0 голосов
/ 06 июня 2018

Это может работать для вас (GNU sed):

sed 's/\([^ ]\)  */\1\n/1;s/ //g;s/\n/ /' file

Заменить первый набор пробелов после столбца новой строкой.Удалить все остальные пробелы.Замените новую строку пробелом.

0 голосов
/ 06 июня 2018

РЕДАКТИРОВАТЬ: Поскольку OP изменил ожидаемый вывод сейчас, поэтому немного подправил код, это должно помочь OP для последнего ожидаемого вывода.

awk '{val=$1;$1="";gsub(/[[:space:]]+/,"");print val,$0}'  Input_file

Следующие awk могут вам помочь.

awk '{val=substr($0,5);gsub(/ +/,"",val);print substr($0,1,4), val;val=""}' Input_file
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...