Переключатель от grep до sed

Советы по устранению неисправностей:

  • Можете Вы ssh localhost на сервере?
  • Пользователям разрешают? (AllowUsers установка)
  • Вы связываете с внешним NIC? (ищите ListenAddress 0.0.0.0 или ListenAddress ::)
  • Вы работаете на порте 22? (Port)

    • В основном проверьте /etc/ssh/sshd_config.
  • Добавленный: можно использовать netstat -tlpn | grep 22 узнать, какие программы (если таковые имеются) слушают на порте 22 (выполненный как корень для наблюдения имен процесса).

Кроме того, рассмотрите использование явного подключения порта вместо ping (например. nmap -PN remote -p22 или даже просто telnet remote 22)

0
02.04.2011, 10:02
3 ответа
sed -n '/1987/s/^\([^,]*\),.*$/\1/p' students.txt

или поскольку Glenn указал:

sed -n '/1987/s/,.*//p' students.txt
5
28.01.2020, 02:13
  • 1
    : s/,.*// –  glenn jackman 02.04.2011, 20:53
  • 2
    спасибо @glenn. Вы знаете, что я смотрел свой ответ вчера, думая, что должен быть более быстрый путь, и затем я думал о /1987/,.*/d затем я понял, нет, это удаляет всю строку. По некоторым причинам Ваш ответ вышел из меня. –  SiegeX 02.04.2011, 21:15

Если бы Вы хотите пойти с awk, я предложил бы другой ответ Johnsyweb. Питание awk включает выбор разделителя (разделителей) полей:

awk -F'[,: ]*' '$3 ~ /1987$/ {print $1}' students.txt

Но вопрос был о sed, таким образом, я полагаю, что SiegeX должен получить лучшее голосование.

3
28.01.2020, 02:13
  • 1
    > хорошо, что Вы указываете, что этот вопрос умозрительно о sed, и вероятно user5836 должен использовать sed, но одной из хороших вещей на этом форуме является объем тангенциальной информации, которая прибывает из 'связанных' проблем..., например, упоминания нескольких, полевой разделитель (-F) является большим для меня, как я задавался вопросом, как сделать это с awk..., таким образом, Вы получаете +1 от меня :) без недостатка, подразумеваемого к ответу sed.... Наблюдение всех альтернатив является хорошим :) –  Peter.O 02.04.2011, 08:55

Этот вид проблемы является подходящим к awk:

% awk '/\.1987:/ {gsub(/,.*/, ""); print}' students.txt 
Taylor
Sellen

Или, указывая столбец, а не целую строку (помогающий Вам для настройки, должен Вы хотеть включить другие столбцы:

% awk '/\.1987:/ {
        gsub(/,$/, "", $1);          
        print $1;
}' students.txt
Taylor
Sellen
2
28.01.2020, 02:13
  • 1
    мне нравится факт, Вы сделали дату более конкретной, чем только 1987; уменьшать вероятность столкновения с 1987, появляясь eslewhere в строке.... Я только что начал использовать awk и заметил, что в этом случае, следующее будет работать также (в Вашем первом примере).... {sub(/,.*/,"") –  Peter.O 02.04.2011, 08:30
  • 2
    @fred.bear:Спасибо. и благодарит указать, что мне не было нужно gsub. Проверка на 1987 могла быть локализована в конец столбца 2, таким образом: awk -F':' '$2 ~ /\.1987$/ {sub(/,.*/, ""); print}' students.txt –  Johnsyweb 02.04.2011, 08:55

Теги

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