У меня есть несколько текстовых файлов, содержащих 12 строк и 3 столбца.
Пример:
2 6 0.74
42 6 0.58
80 6 0
112 6 0.24
132 6 1
216 6 0.7
342 6 0
390 6 0.21
432 6 0.56
466 6 0.75
524 6 0.6
646 6 0.9
Я хочу установить для всех значений третьего столбца значение 1 во всех строках.
Вывод должен выглядеть так:
2 6 1
42 6 1
80 6 1
112 6 1
132 6 1
216 6 1
342 6 1
390 6 1
432 6 1
466 6 1
524 6 1
646 6 1
Кто-нибудь знает команду, которая может решить эту проблему?
awk '{print $1, $2, "1"}' inputfile > newfile
пытаться
AWK
$3 = 1
установит третье поле на 1sed (здесь GNU или busybox
sed
с-i
возможностью редактирования на месте)[0-9.]*$
представляет собой последовательность из ,0
чтобы9
и.
до конца строки.сед (гольф 4 байта)
[^ ]*$
любой символ, кроме пробела, до конца строки.источник
sed 's/[^ ]*$/1/'
->awk
игра в гольф:awk \$3=1
(POSIX, но не будет работать с awk из 70-х, как указано в / bin на Solaris)awk
решение действительно круто .... не могли бы вы объяснить, пожалуйстаСтроки в ожидаемом выводе, кажется, заканчиваются двумя пробелами и имеют поля, разделенные одной вкладкой и одним пробелом.
Если это действительно то, что вы хотите, то вам нужно:
Или с
sed
:источник
Просто с помощью GNU
sed
, используя-i
для замены текста прямо в файле:Столбцы подбираются регулярных выражений групп в круглых скобках, повторное использование их
\1
и\2
затем с помощью «1» , чтобы заменить последнюю группу.В этом случае предлагаемое решение также
awk
будет хорошим и коротким.источник
это сделает работу:
источник
источник