This can be done with cut
:
cut -d _ -f 1
e.g.
$ echo host100_044 2 | cut -d _ -f 1 host100
Also with awk
can be done with awk -F_ ''
(probably there is a cleaner way of doing that)
Как я могу использовать awk или sed для печати строки только до первого символа подчеркивания?
До:
host100_044 2 host101_045 2 host102_046 2
После:
host100 host101 host102
This can be done with cut
:
cut -d _ -f 1
e.g.
$ echo host100_044 2 | cut -d _ -f 1 host100
Also with awk
can be done with awk -F_ ''
(probably there is a cleaner way of doing that)
Еще одна альтернатива для sed:
echo 'host100_044 2' | sed 's/^\(.*\)_.*$/\1/'
Если у вас есть это в файле, вы можете назвать это следующим образом;
cat fileName | sed 's/^\(.*\)_.*$/\1/'
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} ' | cut -d ' ' -f2-
Output:
host100 host101 host102
With newlines:
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} $1 ~ /[0-9]/ '
Output:
host100 host101 host102
Using sed
:
echo host100_044 2 | sed 's;_.*;;'
Using sed
in place edit option,
sed -i.old 's;_.*;;' infile
$ echo "host100_044 2" | awk -F'_' '' host100
В -F'_'
инструктирует awk
использовать знак подчеркивания в качестве поля разделителей. Сам awk
скрипт просто печатает первое поле.