텍스트 파일에서 특정 문자를 제거하는 방법

텍스트 파일에서 특정 문자를 제거하는 방법

텍스트 파일에 다음 줄이 있습니다.

1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/13/120411.xml 1 
1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/11/105016.xml 2 
1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/15/149972.xml 3 
1 Q0 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/12/110688.xml 4 

나는 단지 이 데이터를 유지하고 싶습니다:

1 Q0 120411 1 
1 Q0 105016 2 
1 Q0 149972 3 
1 Q0 110688 4 

즉, 경로의 모든 줄을 유지합니다 /home/nikol123/Downloads/Ergasia_1/Ergasia_1/metadata/13/120411.xml. 예를 들어 숫자만 유지합니다 120411.

답변1

필드 구분 기호로 , 및 (공백)을 awk사용해 보십시오 ./.

awk -F'[/. ]' '{print $1 " " $2 " " $11 " " $13}' file

산출:

1 Q0 120411 1
1 Q0 105016 2
1 Q0 149972 3
1 Q0 110688 4

답변2

sed를 사용해 보세요:

sed 's/\(1 Q0\).*\/\(.*\)\.xml\( .*\)/\1 \2\3/' file

또는

sed 's/\(.*\)\/home.*\/\(.*\)\.xml\( .*\)/\1\2\3/' file

산출:

1 Q0 120411 1 
1 Q0 105016 2 
1 Q0 149972 3 
1 Q0 110688 4

답변3

내 솔루션 sed(OSX 및 BSD):

sed -E 's!([0-9]*) (Q0) [a-zA-Z0-9_/]*/([0-9]*).xml ([0-9])!\1 \2 \3 \4!g' file.txt 

나중에 다른 패턴이 필요한 경우(예: Q0이 일정하지 않음...) 이에 적응해야 합니다.

관련 정보