как отсортировать и очистить текстовый файл?

У меня есть массивный текстовый файл с дурацкими данными вроде "BR" (в BR было больше чем / меньше знаков по обе стороны от него, я уже удалил BR из файла, ему просто нужно аккуратно отсортировать строку за строкой и удалить дубликаты. Мне нужно взять все данные, каждую строку для иметь свой собственный единственный домен xyz для каждой строки брать строки с пробелами и перемещать их в свои собственные строки.

поэтому, если у вас уже есть что-то подобное:

/temp/>$ cat temp.txt
 
243.abb.com  www.243.abb.com  mypassword.abb.com
pdc.owc.abb.com   pdc.owc.test.abb.com   pdc.template.abb.com   pdc.template.dev.abb.com
etc...
/temp/$> some-kind-of-script-tosort.sh temp.txt  
 (this creates a new file temp.new.txt)

, вы делаете это так:

/temp/>$  cat temp.new.txt

243.abb.com
www.243.abb.com
mypassword.abb.com
pdc.owc.abb.com
pdc.owc.test.abb.com
pdc.template.abb.com
pdc.template.dev.abb.com
etc....

0
задан 16 April 2021 в 20:30

2 ответа

Некоторые опции:

  1. используют grep -o для вывода каждой последовательности непустых символов в отдельную строку:

     grep -Eo '[^[:blank:]]+' temp. txt > temp.new.txt
    
  2. используйте awk, с последовательностями пробельных символов в качестве разделителя входных записей

     awk 1 RS='[[:пробел:]]+' temp.txt > temp.new.txt
    
  3. используйте awk с входными разделителями по умолчанию, но установите разделитель полей вывода на новую строку (вроде реализации awk #1)

     awk '{$1=$1}1' OFS='\n' temp.txt > temp.new.txt
    
  4. используйте sed для замены последовательностей пустых символов на новые строки:

     sed -E 's/[[:пробел:]]+/\n/g' temp.txt > temp.new.txt
    
  5. (вероятно, наиболее эффективная) замена пробельных символов на новые строки, сжимающие повторы

     tr -s '[:пробел:]' '\n' < temp.txt > temp.new.txt
    
0
ответ дан 23 April 2021 в 23:21

Поскольку вы не показали нам, что на самом деле находится в файле ( od -bc file.txt покажет каждый байт), я предполагаю ничего, кроме пробелов между записями.

tr ' ' "\n" file.txt | grep -Ev '^$'

Это работает путем замены всех пробелов на новые строки ( LF , 0x0), а затем удаления всех пустых строк.

0
ответ дан 23 April 2021 в 23:21

Другие вопросы по тегам:

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