Как удалить весь текст после символа в bash?

Как удалить весь текст после символа, в данном случае двоеточие (“:”), в bash? Могу ли я удалить двоеточие? Я понятия не имею, как это сделать.

Пример может быть полезен, но если бы я понял вас правильно, это сработало бы:

echo "Hello: world" | cut -f1 -d":" 

Это превратит «hello: world» в «привет».

В Bash (и ksh, zsh, тире и т. Д.) Вы можете использовать расширение параметра с % которое удалит символы из конца строки или # которые будут удалять символы из начала строки. Если вы используете один из этих символов, минимальная совпадающая строка будет удалена. Если вы удвоите символ, самый длинный будет удален.

 $ a='hello:world' $ b=${a%:*} $ echo "$b" hello $ a='hello:world:of:tomorrow' $ echo "${a%:*}" hello:world:of $ echo "${a%%:*}" hello $ echo "${a#*:}" world:of:tomorrow $ echo "${a##*:}" tomorrow 
 $ echo 'hello:world:again' |sed 's/:.*//' hello 
 egrep -o '^[^:]*:' 

Допустим, у вас есть путь с файлом в таком формате:

 /dirA/dirB/dirC/filename.file 

Теперь вам нужен только путь, который включает в себя четыре «/». Тип

 $ echo "/dirA/dirB/dirC/filename.file" | cut -f1-4 -d"/" 

и ваш результат будет

 /dirA/dirB/dirC 

Преимущество использования cut заключается в том, что вы также можете вырезать каталог uppest, а также файл (в этом примере), поэтому, если вы набираете

 $ echo "/dirA/dirB/dirC/filename.file" | cut -f1-3 -d"/" 

ваш результат будет

 /dirA/dirB 

Хотя вы можете сделать то же самое с другой стороны строки, в этом случае это не будет иметь большого смысла, поскольку введите

 $ echo "/dirA/dirB/dirC/filename.file" | cut -f2-4 -d"/" 

приводит к

 dirA/dirB/dirC 

В некоторых других случаях может оказаться полезным и последний случай. Имейте в виду, что в начале последнего вывода нет «/».

  • Согласование файлов с различными расширениями с использованием цикла
  • Почему мой счетчик Bash сбрасывается после цикла while
  • эхо, который выводит на stderr
  • Как предотвратить появление команд в истории bash?
  • Почему ls дает разные выходные данные при передаче по трубопроводам
  • Ошибка скрипта Bash [:! =: Ожидаемый унарный оператор
  • Как передать символ asterisk '*' в bash в качестве аргументов моей программе на C?
  • Каково ключевое слово 'function', используемое в некоторых сценариях bash?
  • Как перезагрузить .bashrc без выхода из системы и обратно?
  • Что означает -z в Баше?
  • Удалить фиксированный префикс / суффикс из строки в Bash
  • Interesting Posts

    Настроить тики x-axis

    Получить кликнутый элемент и его позицию в RecyclerView

    CSS: как иметь позицию: абсолютный div внутри позиции: относительный div не обрезается переполнением: скрыто на контейнере

    Понимание: исходная опция has_one / has_many через Rails

    Разница между a + = 10 и a = a + 10 в java?

    PDF – Какое программное обеспечение для заполнения / заполнения формы PDF?

    M2E и сгенерированные исходные папки maven в качестве исходных папок eclipse

    Преобразовать java.util.Date в java.time.LocalDate

    Как проверить хранимую процедуру Oracle с возвращаемым типом RefCursor?

    Как использовать несколько моделей с одним маршрутом в EmberJS / Ember Data?

    Должен ли я использовать NSUserDefaults или plist для хранения данных?

    FIELDDATA Данные слишком велики

    Laravel – Получить последнюю запись каждого типа UID

    Оставить скрипт bash на удаленном терминале, пока он не вошел в систему?

    Получение streamа RTSP с использованием библиотеки FFMPEG

    Давайте будем гением компьютера.