find
grep
a 및 파이프에서 다음과 같은 유형의 출력이 있습니다.
./Columbia/815425_0001104659-11-049107.txt: CENTRAL INDEX KEY: 0000815425
./Columbia/815425_0001104659-12-060231.txt: CENTRAL INDEX KEY: 0000815425
./Columbia/815425_0001104659-13-066298.txt: CENTRAL INDEX KEY: 0000815425
./Dimensional Advisors/355437_0001137439-04-000108.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-05-000205.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-06-000306.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-08-000364.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-09-000076.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-12-000295.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001140361-10-035592.txt: CENTRAL INDEX KEY: 0000355437
난 갖길 원해
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
생각하고 sed
있는데 grep
어떻게 다 합칠지 헷갈립니다: 매칭 1부: (전에는 어떻게 매칭하나요 /
?)
erik Funds$ cat myoutput | egrep -o "[A-Z].*/"
Columbia/
Columbia/
Columbia/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
Dimensional Advisors/
마지막 10자리 숫자는 다음과 같습니다.
erik Funds$ cat myoutput | egrep -o "[0-9]{10}$"
0000815425
0000815425
0000815425
0000355437
0000355437
0000355437
0000355437
0000355437
0000355437
0000355437
답변1
awk
필드 구분 기호로 사용한 /
다음 필드 2와 필드 3을 인쇄합니다(필요한 0 패딩 사용).
... | awk -F/ '{ printf("%s %010d\n", $2, $3) }'
예:
$ cat file.txt
./Columbia/815425_0001104659-11-049107.txt: CENTRAL INDEX KEY: 0000815425
./Columbia/815425_0001104659-12-060231.txt: CENTRAL INDEX KEY: 0000815425
./Columbia/815425_0001104659-13-066298.txt: CENTRAL INDEX KEY: 0000815425
./Dimensional Advisors/355437_0001137439-04-000108.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-05-000205.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-06-000306.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-08-000364.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-09-000076.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001137439-12-000295.txt: CENTRAL INDEX KEY: 0000355437
./Dimensional Advisors/355437_0001140361-10-035592.txt: CENTRAL INDEX KEY: 0000355437
$ awk -F/ '{ printf("%s %010d\n", $2, $3) }' file.txt
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
답변2
$ sed -E 's|^\./([^/]+)/.*\s([0-9]+)$|\1 \2|' myoutput
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
-E
확장 정규식^\./
./
줄의 시작 부분에서 일치([^/]+)
비/
문자 캡처/.*\s
/
임의 개수의 문자와 일치하고 그 뒤에 공백 문자가 옵니다.([0-9]+)$
줄 끝의 숫자를 캡처하세요.\1 \2
캡처된 그룹을 사이에 공백을 두고 붙여넣습니다.
sed
\
줄 바꿈을 제외한 모든 구분 기호가 허용되므로 |
여기서는 탈출을 방지하기 위해 사용됩니다./
답변3
awk - FS를 사용하여 분할
슬래시 구분 기호로 입력을 분할한 다음 공백 구분 기호로 다시 분할 하도록 설정한 경우 awk
올바른 필드를 선택할 수 있습니다.
<infile awk '{ n=$2; FS=" +"; $0=$0; print n, $NF; FS="/" }' FS=/
GNU awk - FPAT 필드 설명 사용
필드를 올바르게 설명하면 FPAT
원하는 결과를 얻을 수 있습니다. 다음은 입력에 적합한 예입니다.
<infile awk '{ print $1, $NF }' FPAT='[[:alnum:][:space:]]+'
산출
Columbia 0000815425
Columbia 0000815425
Columbia 0000815425
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
Dimensional Advisors 0000355437
답변4
tr
다음을 통해 데이터를 전송하는 또 다른 솔루션은 다음과 같습니다 cut
.
…|tr ':' '/'|cut -d'/' -f2,5|tr -d '/'
첫 번째 열은 두 번째 열과 마찬가지로 마지막 열을 분리하기 위한 구분 기호 로 사용할 수 있도록 로 대체 tr
됩니다 . 여러 열을 추출했으므로 사용하지 않는 한 출력에는 구분 기호로 가 포함되지만 제거를 사용하면 이 문자가 더 짧아집니다 .:
/
cut
/
cut
/
--output-delimiter
tr -d
여러 개의 공백을 원하지 않으면 다음을 통해 파이프를 추가할 수 있습니다 sed
.
…|sed 's/ */ /g'