используя команды sed

У меня есть один из этих файлов.

Есть цифры в первой строке, алфавиты во второй строке, специальные символы в третьей строке.

Это повторяется. Я имею в виду, что первая строка - это номер, вторая строка - это алфавит, третья строка - это специальный символ, четвертая строка - это номер, пятая строка - это алфавит. Я хочу вынуть строки с алфавитом и перенаправить их в другой файл.

Я знаю, как перенаправить. И вот команда, которую я знаю. (Я думаю, что это может быть подсказка ....)

sed -n '1 ~ 2p' имя файла (вывод всех нечетных строк) и sed -n '1 ~ 2 ! p '(вывод всех четных строк)

Мне действительно интересно, как это сделать.

Кроме того, мне любопытно, чтобы команда рисовала только линии с цифрами и специальными символами. Ну

Команда, которую вы можете использовать, это две вышеупомянутые команды. (Мне любопытно использовать sed)

Я действительно хочу знать.

0
задан 8 June 2019 в 08:36

2 ответа

Вам нужен поиск по альфа-символам?
SED лучше для редактирования потоков, вот более простой метод поиска

grep -E '[a-zA-Z]' infile > outfile

И затем, если вы хотите все, кроме альфы, напишите это

grep -E '[^a-zA-Z]' infile > outfile

НО ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ SED, чтобы удалить все, кроме Второй строки, сделайте это

sed -n 'n;p;n' infile
0
ответ дан 8 June 2019 в 08:36

GNU sed n~m может быть считан как n пропустить m. Так, учитывая файл как:

1234
abcd
#$^*
5678
zxcv
)&*%
96401
YnayI
+}\[_

затем для печати только первого, третьего, четвертого, шестого и так далее можно удалить 2 пропустить 3:

$ sed '2~3d' file
1234
#$^*
5678
)&*%
96401
+}\[_

Менее эффективно Вы могли распечатать 1 и 3, с пропусками 3 в обоих случаях:

$ sed -n -e '1~3p' -e '3~3p' file
1234
#$^*
5678
)&*%
96401
+}\[_
0
ответ дан 24 October 2019 в 05:19

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

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