텍스트 파일에 다음 줄이 있습니다.
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이 일정하지 않음...) 이에 적응해야 합니다.