nl이나 seq에 해당하는 알파벳이 있나요?

nl이나 seq에 해당하는 알파벳이 있나요?

파일이 있는데 숫자 대신 "알파벳"(간단한 ASCII a, b, c 등)을 사용하여 줄에 번호를 매기고 싶습니다. 그럼 어디서 할 수 있나요?

nl somefile

나는 이런 일을하고 싶다 :

abc somefile

다음 출력을 얻습니다.

a line 1 of file
b line 2 of file
c line 3 of file
...

문자에 상응하는 문자라도 seq도움이 될 것입니다. 이를 사용하여 paste줄의 접두어를 붙일 수 있습니다.

간단하게 유지하기 위해 내 파일은 26줄 이하입니다. 따라서 abcx,y,z,aa,ab,ac...와 같은 문자를 줄바꿈할 필요가 없습니다.

답변1

사용 및 bash:pasteheadwcprintf

# generate somefile
$ printf 'line %s of file\n' {1..5} > somefile

# then paste
$ paste -d ' ' <(printf '%s\n' {a..z}) somefile
a line 1 of file
b line 2 of file
c line 3 of file
d line 4 of file
e line 5 of file
f
g
...

a-e생성해야 하는 문자 수( 이 경우)를 모르기 때문에 전체 알파벳을 생성하고 가능한 한 많은 줄을 병합하여 somefile함수로 작성할 수 있습니다.

function abc() { paste -d ' ' <(printf '%s\n' {a..z} | head -n $(wc -l <"$1")) "$1"; }

산출:

$ abc somefile
a line 1 of file
b line 2 of file
c line 3 of file
d line 4 of file
e line 5 of file

답변2

awk를 사용할 수 있습니다.

awk '{printf "%c\t%s\n", NR+96, $0}'

(97은 ASCII 10진수 값입니다 a.)

% seq 1 10 |  awk '{printf "%c\t%s\n", NR+96, $0}'   
a       1
b       2
c       3
d       4
e       5
f       6
g       7
h       8
i       9
j       10

답변3

문자나 숫자뿐만 아니라 bash에서 모든 문자 범위를 인쇄합니다.

$ printf '%b\n' "$(eval printf '\\%03o' $(printf '{%d..%d}' "'!" "'~"))"
!"#$%&'()*+,-./0123456789:;<=>?@ABCDEFGHIJKLMNOPQRSTUVWXYZ[\]^_`abcdefghijklmnopqrstuvwxyz{|}~

답변4

Perl은 "z" -> "aa" 등을 포함하여 문자열을 증가시키는 방법을 알고 있습니다. 이 시도:

# a bash function for "alphabetic nl"
anl() {
    perl -sne 'printf "%6s\t%s", $nl++, $_' -- -nl=a "$@"
}

그럼 당신은 할 수 있습니다

seq 50 | anl
anl file file ...

관련 정보