답변:
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"} {printf("host%s ", $1)}' | cut -d ' ' -f2-
산출:
host100 host101 host102
줄 바꿈으로 :
echo host100_044 2 host101_045 2 host102_046 2| sed 's/_/ /g' | awk 'BEGIN { RS="host"} $1 ~ /[0-9]/ {print "host"$1}'
산출:
host100
host101
host102
사용 sed
:
echo host100_044 2 | sed 's;_.*;;'
sed
내부 편집 옵션을
사용하여
sed -i.old 's;_.*;;' infile
awk
솔루션에 대해 이미 게시 되었지만 ( cut
이 경우 가장 적합 할 수도 있음), 동일한 내용을 작성하고 있었지만 , 그는 물었 으므로 sed
초를 이겼습니다 :-). 기본적으로 줄 끝 $
과 일치 하므로을 제거 할 수도 있습니다 .*
.
$ echo "host100_044 2" | awk -F'_' '{print $1}'
host100
-F'_'
에 지시는 awk
필드 구분 기호로 밑줄을 사용합니다. awk
스크립트 자체는 첫 번째 필드를 출력한다.
이것은 전에 출력을 인쇄합니다 _
:
sed 's/_.*//' -filename