18. 포맷 출력 (즐 거 운 Linux 명령 줄)
6030 단어 《 즐 거 운 리 눅 스 명령 행 》.
nl
줄 번호 추가
fold
파일 너비 제한
fmt
텍스트 형식 변환기
pr
텍스트 인쇄 준비
printf
포맷 데이터 출력
groff
파일 포맷 시스템
2. 지식 포인트
지식 포인트 1: nl 태그 와 옵션 은 어떤 것 이 있 습 니까?
\:\:\:
논리 페이지 머 릿 말 시작 부분
\:\:
논리 페이지 주체 시작 부분
\:
논리 페이지 꼬 릿 말 시작 부분
-b style
body 를 요구 되 는 방식 에 따라 줄 을 세 는 것 은 다음 과 같은 방식 일 수 있 습 니 다. a = 모든 줄 t = 수 는 빈 줄 이 아 닙 니 다.기본 설정 입 니 다.n = pregexp 없 음 = 정규 표현 식 과 일치 하 는 줄 만 셀 수 있 습 니 다.
-f style
footer 를 요 구 된 설정 수 에 따라 설정 합 니 다.묵인
-h style
header 를 요 구 된 설정 수 에 따라 설정 합 니 다.묵인
-i number
페이지 증 가량 을 숫자 로 설정 합 니 다.묵인 은 하나 다.
-n format
숫자 형식 을 설정 합 니 다. 형식 은 ln = 왼쪽, 선도 0 이 없습니다.rn = 오른쪽, 선도 0 이 없습니다.rz = 오른쪽, 선도 0.
-p
모든 논리 페이지 의 시작 에 페이지 수 를 재 설정 하지 마 십시오.
-s string
모든 줄 의 끝 에 문 자 를 붙 여 분할 기 호 를 한다.기본 값 은 하나의 tab 입 니 다.
-v number
모든 논리 페이지 의 첫 줄 을 숫자 로 설정 합 니 다.묵인 은 하나 다.
-w width
줄 의 폭 을 기본 값 으로 6 으로 설정 합 니 다.
지식 점 2: printf 변환 규범 구성 요소?
구성 요소
묘사 하 다.
d
숫자 를 기호 가 있 는 10 진수 로 포맷 하 다.
f
부동 소수점 을 포맷 하고 출력 합 니 다.
o
정 수 를 8 진수 로 포맷 하 다
s
문자열 포맷
x
정 수 를 16 진수 로 포맷 하고 필요 할 때 소문 자 a - f 를 사용 합 니 다.
X
x 와 같 지만 대문자 로 변 합 니 다.
%
% 기호 인쇄 (예 를 들 어 '%%' 지정)
구성 요소
묘사 하 다.
flags
5 가지 서로 다른 표지 가 있 습 니 다: \ # – "예비 형식" 으로 출력 합 니 다.이것 은 데이터 형식 에 달 려 있다.o (8 진수) 변환 에 대해 출력 은 0 을 접두사 로 합 니 다. x 와 X (16 진수) 변환 에 대해 출력 은 각각 0 x 또는 0 X 를 접두사 로 합 니 다.0 – (0) 0 으로 출력 을 채 웁 니 다.이 필드 는 "000380" 과 같은 선도 0 을 채 울 것 임 을 의미 합 니 다. - –왼쪽 정렬 출력.기본 적 인 상황 에서 printf 오른쪽 정렬 출력. '-'(빈 칸) 정수 앞 에 한 칸 을 비 웁 니 다. + –(플러스) 정수 전에 플러스 를 추가 합 니 다.기본적으로 printf 는 음수 앞 에 만 기 호 를 추가 합 니 다.
width
최소 필드 너비 의 수 를 지정 합 니 다.
.precision
부동 소수점 에 대해 서 는 소수점 뒤의 정밀도 자릿수 를 지정 합 니 다.문자열 변환 에 출력 할 문자 수 를 지정 합 니 다.
변량
격식.
결실
비고
380
"%d"
380
단순 포맷 정수.
380
"%#x"
0x17c
'대체 형식' 플래그 를 사용 하여 정 수 를 16 진수 로 포맷 합 니 다.
380
"%05d"
00380
선도 0 (padding) 으로 정 수 를 포맷 하고 최소 필드 폭 은 다섯 글자 입 니 다.
380
"%05.5f"
380.00000
전도 0 과 5 자리 소수 비트 정밀 도 를 사용 하여 부동 소수점 으로 포맷 합 니 다.지정 한 최소 필드 너비 (5) 는 포맷 된 숫자의 실제 너비 보다 작 기 때문에 선도 0 이라는 명령 은 실제로 작용 하지 않 습 니 다.
380
"%010.5f"
0380.00000
최소 필드 폭 을 10 으로 늘 리 면 전도 0 이 보 입 니 다.
380
"%+d"
+380
+ 플래그 로 정 수 를 표시 합 니 다.
380
"%-d"
380
사용 - 표지 왼쪽 정렬
abcdefghijk
"%5s"
abcedfghijk
최소 필드 너비 로 문자열 을 포맷 합 니 다.
abcdefghijk
"%d"
abcde
문자열 의 정밀 도 를 적용 합 니 다. 그 중에서 절 단 됩 니 다.
3. 코드 실 기
[me@linuxbox ~]$ nl distros.txt | head
: cat -n
[me@linuxbox ~]$ echo "The quick brown fox jumped over the lazy dog." | fold -w 12
The quick br
own fox jump
ed over the
lazy dog.
: 12 。 , 80。 12 。
[me@linuxbox ~]$ echo "The quick brown fox jumped over the lazy dog."
| fold -w 12 -s
The quick
brown fox
jumped over
the lazy
dog.
:-s , 。
‘fmt’ reads from the specified FILE arguments (or standard input if
none are given), and writes to standard output.
By default, blank lines, spaces between words, and indentation are
preserved in the output; successive input lines with different
indentation are not joined; tabs are expanded on input and introduced on
output.
[me@linuxbox ~]$ fmt -w 50 fmt-info.txt | head
'fmt' reads from the specified FILE arguments
(or standard input if
none are given), and writes to standard output.
By default, blank lines, spaces between words,
and indentation are
preserved in the output; successive input lines
with different indentation are not joined; tabs
are expanded on input and introduced on output.
: 50 。 , -c 。
[me@linuxbox ~]$ cat > fmt-code.txt
# This file contains code with comments.
# This line is a comment.
# Followed by another comment line.
# And another.
This, on the other hand, is a line of code.
And another line of code.
And another.
[me@linuxbox ~]$ fmt -w 50 -p '# ' fmt-code.txt
# This file contains code with comments.
# This line is a comment. Followed by another
# comment line. And another.
This, on the other hand, is a line of code.
And another line of code.
And another.
; -p '#' 。
[me@linuxbox ~]$ pr -l 15 -w 65 distros.txt
2008-12-11 18:27 distros.txt Page 1
SUSE 10.2 12/07/2006
Fedora 10 11/25/2008
SUSE 11.0 06/19/2008
Ubuntu 8.04 04/24/2008
Fedora 8 11/08/2007
2008-12-11 18:27 distros.txt Page 2
SUSE 10.3 10/04/2007
Ubuntu 6.10 10/26/2006
Fedora 7 05/31/2007
Ubuntu 7.10 10/18/2007
Ubuntu 7.04 04/19/2007
:-l ( ) -w ( ) 65 , 15 “ ”。
[me@linuxbox ~]$ printf "I formatted the string: %s
" foo
I formatted the string: foo
[me@linuxbox ~]$ printf "I formatted '%s' as a string.
" foo
I formatted 'foo' as a string.
[me@linuxbox ~]$ printf "%d, %f, %o, %s, %x, %X
" 380 380 380 380 380 380
380, 380.000000, 574, 380, 17c, 17C
[me@linuxbox ~]$ printf "%s\t%s\t%s
" str1 str2 str3
str1 str2 str3
[me@linuxbox ~]$ printf "Line: %05d %15.3f Result: %+15d
" 1071
3.14156295 32589
Line: 01071 3.142 Result: +32589
[me@linuxbox ~]$ printf "
\t
\t\t%s
\t
\t
\t\t%s
\t
" "Page Tit
le" "Page Content"
Page Title
Page Content
[me@linuxbox ~]$ man ls | head
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
[me@linuxbox ~]$ zcat /usr/share/man/man1/ls.1.gz | groff -mandoc -T
ascii | head
LS(1) User Commands LS(1)
NAME
ls - list directory contents
SYNOPSIS
ls [OPTION]... [FILE]...
: man