줄의 마지막 문자를 제거하고 싶습니다.
[root@ozzesh ~]#df -h | awk '{ print $5 }'
Use%
22%
1%
1%
59%
51%
63%
5%
예상되는 결과:
Use
22
1
1
59
51
63
5
답변1
sed 's/.$//'
마지막 문자를 제거합니다.
하지만 이 특정한 경우에는 다음과 같이 할 수도 있습니다.
df -P | awk 'NR > 1 {print $5+0}'
산술 표현식( $5+0
)을 사용하여 awk
5번째 필드를 숫자로 해석하고 숫자 뒤의 모든 항목은 무시됩니다.
GNU df
( -h
여기에서는 필요하지 않지만 이미 GNU 확장임)는 디스크 사용량 비율만 출력하도록 지시할 수도 있습니다.
df --output=pcent | tail -n +2 | tr -cd '0-9\n'
(tail은 헤더를 건너뛰고, tr은 숫자와 줄 구분 기호를 제외한 모든 것을 제거합니다.)
Linux에서는 다음도 참조하세요.
findmnt -no USE%
답변2
여기 있습니다 sed
. 매우 간단합니다.
$ cat file
Use%
22%
1%
1%
59%
51%
63%
5%
$ sed 's/.$//' file
Use
22
1
1
59
51
63
5
구문은 입니다 s(ubstitute)/search/replacestring/
. .
모든 문자를 나타내고 $
줄의 끝을 나타냅니다. 따라서 .$
마지막 문자만 삭제됩니다.
이 경우 전체 명령은 다음과 같습니다.
df -h | awk '{ print $5}' | sed 's/.$//'
답변3
두 가지 해결책이 있습니다.
자르다:
echo "somestring1" | rev | cut -c 2- | rev
여기에서는 문자열을 반전시키고 두 번째 문자에서 문자열을 잘라낸 다음 다시 반전시킵니다.
sed:
echo "somestring1" | sed 's/.$//'
.$
여기에서는 마지막 문자 뒤의 모든 문자를 의미하는 정규식을 검색 하고 이를 null//
(두 개의 슬래시 사이) 로 바꿉니다.
답변4
이 사실을 알고 계십니까 head
? tail
라인 단위가 아닌 문자 단위로 작업할 수 있습니까?
$ printf "I don't like periods." | head -c-1
I don't like periods
(BTW, printf
여기서는 "개행" 문자가 줄 끝에 인쇄되는 것을 방지하기 위해 사용됩니다. 출력에 개행 문자가 있고 공백이 아닌 마지막 문자와 함께 이를 제거하려는 경우 사용하십시오 head -c-2
.)
이것은 기본적으로 "Guru"가 사용하는 것과 동일한 솔루션이지만 "last n things" 구문이 없기 때문에 cut
앞뒤로 사용해야 하는 펑키한 작업이 없습니다.rev
cut
일련의 줄을 반복하고 각 줄의 마지막 문자를 제거하려면 다음과 같이 할 수 있습니다.
some-command | while read line; do echo $(head -c-2 <<<"$line"); done