Ответы пользователя по тегу Командная строка
  • Как повторить последнее действие в приложении?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Действие выполнять в отдельном методе, а потом просто вызвать этот метод повторно. Примерно так:
    static Action lastAction = null;
    
    static void AnyAction()
    {
      Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
      Thread.Sleep(3000);
    }
    
    static void Repeat()
    {
      Console.WriteLine("Хотите повторить? [Д/н]");
    
      if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
      {
        Console.WriteLine();
        lastAction();
        Repeat();
      }
    }
    
    static void Main(string[] args)
    {
      lastAction = AnyAction;
      lastAction();
      Repeat();
    }

    Или использовать очереди и добавлять действие в очередь при необходимости выполнить повтор:

    static Queue<Action> actions = new Queue<Action>();
    
    static void AnyAction()
    {
      Console.WriteLine("Выполняю какое-то действие. Не отключайтесь...");
      Thread.Sleep(3000);
    }
    
    static void Main(string[] args)
    {
      actions.Enqueue(AnyAction);
    
      while (actions.Count > 0)
      {
        actions.Dequeue()();
    
        Console.WriteLine("Хотите повторить? [Д/н]");
    
        if (char.ToUpper(Console.ReadKey().KeyChar) == 'Д')
        {
          Console.WriteLine();
          actions.Enqueue(AnyAction);
        }
      }
    }
    Ответ написан
    1 комментарий
  • Как найти и заменить второе вхождение?

    AlekseyNemiro
    @AlekseyNemiro
    full-stack developer
    Примерно так:
    sed ':a;N;$!ba;s/""/"world"/2'

    , где двоеточие - определение метки с именем a;
    N - добавить новую строку к pattern space;
    $ - к последней строке;
    ! - применить;
    b - переход к метке, в данном случае к метке a;
    s - поиск и замена;
    /""/ - что ищем, в данном случае пустые кавычки;
    "world" - на что заменить найденное совпадение, в данном случае на "world";
    /2 - замена второго совпадения.

    echo "hello: \"\"
    hello: \"\"
    hello: \"\"" | sed ':a;N;$!ba;s/""/"world"/2'

    Еще можно такой вариант попробовать:

    sed '2s/""/"world"/1'
    Ответ написан
    4 комментария