답변:
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'
(꼬리는 머리글을 건너 뛰고 tr은 숫자와 줄 구분자를 제외한 모든 것을 제거합니다).
Linux에서 다음을 참조하십시오.
findmnt -no USE%
{print +$5}
잘 작동합니다 ...
을 사용하면 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/.$//'
sed
중복 : 그것은 할 수 있습니다 awk
:df -h | awk '{gsub(/%/,""); print $5}'
다른 접근법 :
mapfile -t list < <(df -h)
printf '%s\n' "${list[@]%?}"
함수로 바꾸십시오 :
remove_last() {
local char=${1:-?}; shift
mapfile -t list < <("$@")
printf '%s\n' "${list[@]%$char}"
}
그런 다음 다음과 같이 호출하십시오.
remove_last '%' df -h
mapfile
bash4 기능입니다.
여기서 중요한 것은 제거 할 캐릭터를 제공 해야 한다는 것입니다 . 당신은 그냥 수있게하려면 마지막 문자가 될 일이 무엇이든 당신이 통과해야 다음 '?'
또는 ''
. 따옴표가 필요합니다.
df -h | awk 'NR > 1{ print $5 }' | cut -d "%" -f1
cut -d '%' -f1
하는 최초의 '%'까지 라인에서 모든 것을 얻을 수있는 정답이다.
sed -ie '$d' filename
here -i is to write changes
e means expression
$ means last line
d means delete
Note:Without -e option $ wont work
선택 사항 : 첫 번째 줄과 마지막 줄을 삭제하려면 sed -ie '1d;$d'
filename을 사용하십시오.
%
징조입니까?