У меня есть около 200 строк, которые я хочу разделить на 20. Я не знаю, как объяснить.

Например:

test:test | US
testt2:testsdgad | CZ
hksfdg:gsdsd | UK

Я хочу отделить строки, которые имеют | UK , | US и | CZ на разные ряды. Я имею в виду, как преобразовать его в этот формат:

test:test | US
test:test | US
test:test | US
test:test | CZ
test:test | CZ
test:test | UK
test:test | UK
test:test | UK

Как я могу это сделать?

1 ответ1

1

Вы не сказали, какую ОС вы используете. Это работает для Linux, и, возможно, для Windows, если у вас есть awk, gawk, nawk или mawk.

Сначала создайте файл данных. У вас уже есть один, так что вы можете пропустить этот шаг.

for n in {1..66}; do for c in US CZ UK; do echo "test$n:test$n | $c" >> data.in; done; done

Затем отправьте его в awk (или gawk и т.д.) Для сортировки и печати.

cat data.in | awk -- '{a[$3] = a[$3] $0 "\n"}; END{print a["US"] a["CZ"] a["UK"]}' > data.out

Вывод выглядит так:

...
test65:test65 | US
test66:test66 | US
test1:test1 | CZ
test2:test2 | CZ
...

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .