이 파일의 각 행에서 CSV 파일 이름을 추출하는 방법

이 파일의 각 행에서 CSV 파일 이름을 추출하는 방법

다음과 같은 줄이 포함된 파일이 있습니다.

-rw-rw-rw 1 root root 6379 May 24 2016 test1.CSV 
-rw-rw-rw 1 root root 23249 May 25 2016 test2.CSV 
-rw-rw-rw 1 root root 2995 May 26 2016 test3.CSV 

CSV 파일 이름만 유지하면 됩니다. 정규식을 사용해야 하는데 어느 것이 맞는지 모르겠습니다.

예상되는 결과는 "test1.CSV \n test2.CSV \n test3.CSV"입니다.

답변1

당신은 그것을 사용할 수 있습니다grep

grep -io '[^ ]*\.csv' filename

-i, --ignore-case 대소문자 차이를 무시하여 대문자와 소문자만 다른 문자만 일치시킵니다.

-o, --only-matching 일치하는 줄 중 일치하는(비어 있지 않은) 부분만 인쇄합니다. 각 부분은 별도의 출력 줄에 표시됩니다.

[^ ]*\.csv.csv의 후행 공백을 제외한 모든 문자와 일치합니다.

파일 이름에 공백이 없다고 가정합니다.

아니면 당신은 사용할 수 있습니다awk

awk '{print $(NF)}' filename | grep -i '\.csv'

변수는 $(NF)각 행의 마지막 필드입니다.

답변2

이 시도:[^ ]* *$

또는 관련이 있는 경우 간단히 말해서gawk '{print $NF}'

답변3

이 시도,

awk '$NF~/CSV$/ {print $NF}'  file
  • CSV로 끝나는 행을 추출하고 마지막 필드를 인쇄합니다.

답변4

"awk"를 사용할 수 있습니다:

awk '{print $9}' files

파일 이름이 해당 줄의 9번째 필드인 경우에는 작동합니다.

관련 정보