У меня есть один из этих файлов.
Есть цифры в первой строке, алфавиты во второй строке, специальные символы в третьей строке.
Это повторяется. Я имею в виду, что первая строка - это номер, вторая строка - это алфавит, третья строка - это специальный символ, четвертая строка - это номер, пятая строка - это алфавит. Я хочу вынуть строки с алфавитом и перенаправить их в другой файл.
Я знаю, как перенаправить. И вот команда, которую я знаю. (Я думаю, что это может быть подсказка ....)
sed -n '1 ~ 2p' имя файла (вывод всех нечетных строк) и sed -n '1 ~ 2 ! p '(вывод всех четных строк)
Мне действительно интересно, как это сделать.
Кроме того, мне любопытно, чтобы команда рисовала только линии с цифрами и специальными символами. Ну
Команда, которую вы можете использовать, это две вышеупомянутые команды. (Мне любопытно использовать sed)
Я действительно хочу знать.
Вам нужен поиск по альфа-символам?
SED лучше для редактирования потоков, вот более простой метод поиска
grep -E '[a-zA-Z]' infile > outfile
И затем, если вы хотите все, кроме альфы, напишите это
grep -E '[^a-zA-Z]' infile > outfile
НО ЕСЛИ ВЫ ХОТИТЕ ИСПОЛЬЗОВАТЬ SED, чтобы удалить все, кроме Второй строки, сделайте это
sed -n 'n;p;n' infile
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
+}\[_