Как я могу распечатать все символы до определенного шаблона (исключая сам шаблон) с помощью grep/awk/sed.
echo "abc-1234a :" | grep <do-something>
просто распечатать abc-1234a
1 ответов
Я думаю, что это ближе к тому, что вы получаете, но не зная, чего вы действительно пытаетесь достичь, трудно сказать.
echo "abc-1234a :" | egrep -o '^[^:]+'
... хотя это также будет соответствовать линиям, у которых нет двоеточия. Если вы хотите только линии с двоеточиями, и вы должны используйте только grep, это может сработать:
echo "abc-1234a :" | grep : | egrep -o '^[^:]+'
конечно, это имеет смысл, только если ваш echo "abc-1234a :"
является примером, который будет заменен, возможно, несколькими строками вход.
самый маленький инструмент, который вы могли бы использовать, вероятно,cut
:
echo "abc-1234a :" | cut -d: -f1
и sed
всегда доступен...
echo "abc-1234a :" | sed 's/ *:.*//'
для этого последнего, если вы хотите печатать только строки, содержащие двоеточие, измените его на:
echo "abc-1234a :" | sed -ne 's/ *:.*//p'
черт, вы даже можете сделать это в чистом bash:
while read line; do
field="${line%%:*}"
# do stuff with $field
done <<<"abc-1234a :"
информацию о %%
вы можете man bash
и ищите "