ID 행이 포함된 파일이 있고 각 행에서 특정 하위 문자열을 추출하고 있습니다. 나는 보았다이것답변, 이것은 훌륭하지만 모든 행에서 실행되도록 하는 방법을 모르겠습니다. 나는 그것이 그것의 일부가 되어야 한다고 생각 xargs
하지만 확실하지 않습니다.
예를 들면 다음과 같습니다.
123400011234
973700021234
2839900031235
827900041234
(명확성을 위해 굵은 글씨)
나는 원해요각각위의 줄은 다음 내용을 추출합니다.
0001
0002
0003
0004
이제 나는 알아요하나line , 마지막 8자 중 처음 4자를 가져오는 $line_one
데 사용할 수 있습니다 . echo ${line_one: -8:4}
하지만 이전 명령의 줄이 있습니다(예 cut -d "|" f1
: (제 생각에는 관련 파일이 있는 컴퓨터에 없고 컴퓨터에 인터넷이 없는 것 같습니다)). 내가 상상하는 것은 내가 이것을 실행할 수 있는 세상이다.
cut -d "|" -f1 | xargs echo ${xargs_line: -8:4}
내 출력을 얻으려면 ...
가능합니까? 그렇다면 어떨까요?
답변1
전체 작업을 완료하려면 다음을 수행하면 됩니다 awk
.
$ awk -F'|' '{print substr($1,length($1)-7, 4)}' f1
예
샘플 데이터 파일 f1
:
$ cat f1
123400011234|blah|blah
973700021234|blah|blah
2839900031235|blah|blah
827900041234|blah|blah
이 명령을 실행하면 다음과 같은 결과가 생성됩니다.
$ awk -F'|' '{print substr($1,length($1)-7, 4)}' f1
0001
0002
0003
0004
답변2
cut -d "|" -f1 | while read line; do echo ${line: -8:4}; done