Как удалить пробелы из определенного столбца с помощью awk

Обновление 2016 и более поздние версии.

What is the difference between Iceweasel and Firefox?

  • ВкратцеВ 2016 году Iceweasel исчез , и теперь для всех целей Debian продукт называется Firefox, а пакет называется firefox-esr. Пакет описывается как «мощный, расширяемый веб-браузер с поддержкой современных технологий веб-приложений».
  • Бесполезная историческая предыстория Ice Weasel — это старое название, которое больше относится к ответвлению Firefox, потому что Mozilla хотела защитить свои товарные знаки. Firefox автоматически обновляется из Mozilla; Ice Weasel обновляется через репозиторий. В какой-то момент Mozilla не понравилось, что вы называете вещи, которые они считают устаревшими и не поддерживаются ими, как «Firefox». И Debian применял исправления, которые Mozilla считала не совсем Firefox. Debian исправляет множество программ, чтобы заставить их хорошо работать с другим программным обеспечением, которое они упаковывают, и все их программное обеспечение распространяется через их собственный канал распространения. Это скорее рутина. В 2016 году Mozilla уступила, и это изменило их позицию, заявив «Mozilla признает, что исправления, примененные к Iceweasel/Firefox, не влияют на качество продукта» . Mozilla стала доверять Debian, и по сей день дистрибутив Debian исправляется без учета опасений или одобрения торговой марки Mozilla и распространяется через официальные каналы Debian. Он не заявлен как «модифицированный из восходящего потока путем удаления набора двоичных файлов без исходников, не -бесплатных и связанных с VCS -файлов».

0
10.05.2021, 15:19
3 ответа
awk 'BEGIN{ FS=OFS="\t" }{ gsub(" ", "", $2) }1' infile

FS — входной разделитель полей; OFS — разделитель полей вывода; оба набора равны символу Tab \t, затем мы удаляем (заменяем пустой строкой )все символы пробела во втором поле и печатаем окончательное обновление с используемым 1.

3
28.07.2021, 11:33

Используя GNU sed в расширенном режиме регулярных выражений -E, мы можем сделать это так, как показано. Сначала отгородите второе поле маркерами (\n), о которых известно, что они отсутствуют в пространстве шаблонов. Затем в цикле удалите все пробелы между этими маркерами, а последующий цикл вернет market s в разделители полей.

sed -Ee '
  s/\t/\n/;s//\n/;ta
  :a
    s/(\n.*) (.*\n)/\1\2/
  ta
  y/\n/\t/
' file

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

python3 -c 'import sys
ifs,ors,ifile = "\t", "\n",sys.argv[1]
spc,ofs = " ",ifs
with open(ifile) as f:
  print(*[ofs.join([f1,f2.replace(spc,""),f3_])    
for l in f for f1,f2,f3_ in [l.rstrip().split(ifs,2)]],sep=ors)
' file

perl -F'\t' -pale '
  substr($_,1+index($_,"\t$F[1]"),length($F[1])) =~ tr/ //d;
' file
0
28.07.2021, 11:33

команда

awk 'NR>1{$2=$2$3;$3=" "}1' filename

выход

Roll NO Name         RandomColumn1    RandomColumn2 
1       JasonJames   my value          my val 3
0
28.07.2021, 11:33

Теги

Похожие вопросы