У меня есть массивный текстовый файл с дурацкими данными вроде "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....
Некоторые опции:
используют grep -o
для вывода каждой последовательности непустых символов в отдельную строку:
grep -Eo '[^[:blank:]]+' temp. txt > temp.new.txt
используйте awk, с последовательностями пробельных символов в качестве разделителя входных записей
awk 1 RS='[[:пробел:]]+' temp.txt > temp.new.txt
используйте awk с входными разделителями по умолчанию, но установите разделитель полей вывода на новую строку (вроде реализации awk #1)
awk '{$1=$1}1' OFS='\n' temp.txt > temp.new.txt
используйте sed для замены последовательностей пустых символов на новые строки:
sed -E 's/[[:пробел:]]+/\n/g' temp.txt > temp.new.txt
(вероятно, наиболее эффективная) замена пробельных символов на новые строки, сжимающие повторы
tr -s '[:пробел:]' '\n' < temp.txt > temp.new.txt
Поскольку вы не показали нам, что на самом деле находится в файле ( od -bc file.txt
покажет каждый байт), я предполагаю ничего, кроме пробелов между записями.
tr ' ' "\n" file.txt | grep -Ev '^$'
Это работает путем замены всех пробелов на новые строки ( LF
, 0x0), а затем удаления всех пустых строк.