의 다음 출력을 고려하십시오 df
.
Filesystem Size Used Avail Use% Mounted on
/dev/sda1 23G 6.1G 16G 29% /
udev 10M 0 10M 0% /dev
tmpfs 397M 420K 397M 1% /run
tmpfs 5.0M 0 5.0M 0% /run/lock
tmpfs 1.8G 904K 1.8G 1% /run/shm
/dev/sda6 890G 324G 521G 39% /home
/dev/sdb1 459G 267G 169G 62% /home/user/mnt
none 4.0K 0 4.0K 0% /sys/fs/cgroup
"/dev"
제목으로 시작 하고 유지하는 줄만 표시 하고 나머지는 모두 필터링하려면 어떻게해야합니까 ? 또한 임시 파일이나 변수를 사용하는 데 의지 할 필요가 없습니까? 참고 : 제목은 로케일에 따라 다르므로 정규 표현식으로 잡을 수 없습니다.
간단한 것보다 약간 더 정교한 접근 방식을 사용합니다 grep
.
awk
df -h | awk 'NR==1 || /^\/dev/'
NR
은 현재 줄 번호이므로 awk
이것이 첫 번째 줄이거 나 현재 줄이로 시작하는 경우 위 의 스크립틀릿이 인쇄합니다 /dev
. 그리고 이것을 게시 한 후 @ 1_CR의 답변과 동일하다는 것을 알았습니다. 아 글쎄 ...
Perl
df -h | perl -ne 'print if (/^\/dev/ || $.==1)'
여기에서 동일한 아이디어, Perl에서 특수 변수 $.
는 현재 행 번호입니다. 다른 방법은
df -h | perl -pe '$_="" unless /^\/dev/ || $.==1'
-p
스위치는 입력 파일의 모든 행을 인쇄합니다. 현재 행의 값이 유지 $_
되므로 $_
현재 행을 원하지 않는 한 비어 있도록 설정 합니다.
sed
df -h | sed -n '1p; /^\/dev/p'
는 -n
어떤 라인이 인쇄되지 않도록 정상 출력을 억제한다. 1p
수단은 첫 번째 줄을 인쇄하고 /^\/dev/p
수단과 함께 시작하는 모든 줄을 인쇄 /dev
.
아래 주석에서 지적했듯이 현재 시스템의 로케일로 인해 헤더 행이으로 시작하는 드문 경우 /dev
위의 명령이 두 번 인쇄합니다. 스테판 Chazelas가는 지적 이 하나가 문제가되지 않습니다 :
df -h | sed -e 1b -e '/^\/dev/!d'
grep
df -h | grep -E '^(/dev|File)'
말했듯이 LOCALE 문제로 인해 이식 가능하지 않을 수 있습니다. 그러나 로케일이나 df
버전이 첫 번째 줄에 경로를 제공 하지 않을 것이라고 합리적으로 확신하므로 no 를 포함하는 줄 검색 /
도 작동해야합니다.
df -h | grep -E '^[^/]*$|^/dev'
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다