첫 번째 공백 후 sed / awk를 사용하여 무엇이든 제거 awk / replace를 사용하여 각

aaaaaaaa 09
bbbbbbbb 90
ccccccccccccccc  89
ddddd 09

위의 텍스트에서 sed / awk / replace를 사용하여 각 줄의 첫 번째 공백 다음에 나오는 것을 제거하고 싶습니다. 예를 들어 출력은 다음과 같습니다.

aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd 

도움을 주시면 감사하겠습니다.



답변

세드

sed 's/\s.*$//'

그렙

grep -o '^\S*'

어 wk

awk '{print $1}'

의견에서 지적했듯이 -oPOSIX는 아닙니다. 그러나 GNU와 BSD 모두 가지고 있기 때문에 대부분의 사람들에게 효과적입니다.

또한, \s/ \S당신이 그것을 인식하지 못하는 경우가 문자 그대로의 공간을 사용하거나 공간과 탭, 브라켓 표현 (에 그 싶은 경우에 할 수있는 모든 시스템에하지 않을 수 있습니다 [...]), 또는 [[:blank:]]엄밀히 말하자면 그 문자 클래스를 (주 \s입니다 [[:space:]]CR, LF 또는 VT와 같이 세로 간격 문자와 동일 하고 포함합니다.

awk 하나는 선이 빈 문자로 시작하지 않는 가정합니다.


답변

cut -d ' ' -f 1 < your-file

가장 효율적입니다.


답변

awk '{print $1}' file

또는

sed 's/ .*//'

답변

그리고를 통해 하나 perl,

$ perl -pe 's/^([^ ]+) .*$/\1/' file
aaaaaaaa
bbbbbbbb
ccccccccccccccc
ddddd

GNU grep을 통해

$ grep -oP '^[^ ]*' file
bbbbbbbb
ccccccccccccccc
ddddd