Как обрезать строку по определенному символу

Ошибка простая и одна из главных вещей, которые я всегда путаю :Вы путаете Beforeи RequiredBy. Это не сочетается. Остальные правы насчет цели.

-2
09.11.2019, 02:04
3 ответа

Использование grep:

grep -oP '^.*?\s[0-9](\s|$)' file

Опция -oуказывает grep напечатать только совпадение.

Шаблон ищет:

  • Начало строки^
  • За ним следует буквально любое повторяющееся (не -жадное).*?
  • После пробела\s
  • После одной цифры от 0 до 9[0-9]
  • Наконец, за этой единственной цифрой должен следовать пробел или конец строки(\s|$)
0
28.04.2021, 23:27

Если это (использование любого sed в любой оболочке на каждом компьютере UNIX )не все, что вам нужно, отредактируйте свой вопрос, чтобы предоставить лучший пример, включая строки, для которых это не работает:

$ sed 's/\( [0-9]\).*/\1/' file
word_word_word 0
word_word_word 1
word word word word 0
word 2
word word_word 3
0
28.04.2021, 23:27

Цикл for с awk:

awk '{
  for(i=1;i<=NF;i++){
    if($i ~ /[0-9]/){
      printf "%s\n",$i;
      break
    }
    printf "%s ",$i
  }
}' file

Получит то, что вы хотите.

0
28.04.2021, 23:27

Теги

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