Рейтинг:0

Как добавить еще один столбец

флаг ng

Я пытаюсь превратить такой файл во что-то внизу. Я не уверен, как использовать awk или paste для этого.

0.0000000000  0.0000000000  0.0000000000 
0.7804643317  0.5703578412   0.0000000000 
-0.7804643317  0.5703578412   0.0000000000 

Я бы имел дело с изменяющимся количеством строк для файла, который я пытаюсь преобразовать.

0.0000000000 0  0.0000000000 0  0.0000000000 0
0.7804643317 0  0.5703578412 0  0.0000000000 0
-0.7804643317 0  0.5703578412 0  0.0000000000 0
флаг cn
Ray
Я думаю, вы имели в виду, что «количество строк останется равным трем, но количество столбцов изменится»?
Рейтинг:4
флаг in

я бы использовал сед:

sed -i -E 's/([^ ]+)/\1 0/g' файл

или если файл разделен табуляцией:

sed -i -E 's/([^\t]+)/\1\t0/g' файл
  • редактировать файл на месте.
  • с/узор/замена/ означает замену шаблона строкой замены.

ИЛИ ЖЕ аук

awk -i inplace '{for (f=1;f<=NF; f++){$f=$f" 0"}}1' файл

или же

awk -i вместо '{для (f=1;f<=NF; f++){$f=$f"\t0"}}1' файла

Однако большинство реализаций не поддерживают -я на месте. Затем вам нужно записать свой вывод во временный файл и перезаписать исходный файл этим:

awk '{for (f=1;f<=NF; f++){$f=$f" 0"}}1' файл > file.tmp && mv file.tmp file
Рейтинг:2
флаг cn

Perl-подход:

$ perl -ane 'напечатать "$_ 0" для @F; распечатать файл "\n"
0,0000000000 0 0,0000000000 0 0,0000000000 0 
0,7804643317 0 0,5703578412 0 0,0000000000 0 
-0,7804643317 0 0,5703578412 0 0,0000000000 0 

Или, чтобы отредактировать исходный файл:

perl -i -ane 'напечатать "$_ 0" для @F; распечатать файл "\n"
Рейтинг:0
флаг mm

Добавлена ​​помощь от: https://unix.stackexchange.com/questions/11801/replace-all-white-spaces-with-commas-in-a-text-file

$ cat текстовый файл | sed 's/[[:blank:]]\+/\ 0\ /g'

 0,0000000000 0 0,0000000000 0 0,0000000000 0
 0,7804643317 0 0,5703578412 0 0,0000000000 0
 -0,7804643317 0 0,5703578412 0 0,0000000000 0

или украсить столбцом:

$ cat текстовый файл | sed 's/[[:blank:]]\+/\ 0\ /g' | столбец -т -е

 0,0000000000 0 0,0000000000 0 0,0000000000 0 
 0,7804643317 0 0,5703578412 0 0,0000000000 0
 -0,7804643317 0 0,5703578412 0 0,0000000000 0

Остерегайтесь, это учитывает пустые места в конце строки. Возможно, вы захотите отфильтровать с помощью предыдущего sed.

 $ cat текстовый файл | sed 's/[[:blank:]]\+$//g' | sed 's/[[:blank:]]\+/\ 0\ /g' | столбец -т -е

 0,0000000000 0 0,0000000000 0 0,0000000000 
 0,7804643317 0 0,5703578412 0 0,0000000000
 -0,7804643317 0 0,5703578412 0 0,0000000000
terdon avatar
флаг cn
Обратите внимание, что вам не нужен кот. Вы можете передать файл sed в качестве аргумента. Вам также не нужно избегать пробелов.
bac0n avatar
флаг cn
Вы, вероятно, захотите использовать что-то вроде `[[: пусто:]]\+\|$` (хотя в конце примера есть пробелы, перевод строки, вероятно, встречается чаще).

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.