2012-03-09 3 views
0

각 행에서 문자열의 일부를 제거각 줄의 형식의 단일 문자열 내가 텍스트 파일을

/home/usr1/284.txt 

전체 파일은 내가하는 것입니다 원하는 것은

/home/usr1/284.txt 
/home/usr1/361.txt 

같다 /home/usr1/을 제거하고 파일 이름을 유지하십시오 (예 : 284.txt)

linux/unix 명령을 사용하여 어떻게 수행 할 수 있습니까?

답변

1

또한과 같이, 펄을 사용할 수

perl -pe 's,.*/,,' file.txt 
+0

감사합니다. 's,. */,,'의 정규식이 어떻게 작동하는지 자세히 설명해 주시겠습니까? –

+0

@ bit-question, 그것은 마지막'/'을 포함하여 모든 것을 제거합니다. 's'는 치환을 의미하고,','는 내가 선택한 구분자이며, 다른 문자를 사용할 수 있습니다.'. * /'는 정규 표현식이며, 빈 문자열을 대체 문자로 사용합니다. 거의 모든 문자를 구분 기호로 사용할 수 있으며's!. */!! '와 같이 쓸 수 있습니다. – Qtax

1

는 시도이 : 당신은 결국 다른 부분을해야 할 경우

while read line; do basename "$line"; done < filename 

basename의 역수 dirname입니다.

1
sed -e 's!/home/usr1/!!' filename.txt 

또는

awk -F\/ {print $NF} filename.txt 

트릭을 할해야합니다. sed 예에서 패턴 구분 기호로 보통 / 대신 !을 사용하십시오. 즉, 패턴에 리터럴 /자를 이스케이프 할 필요가 없음을 의미합니다.

3

파일의 필드가 고정되어 있기 때문에, 당신은 간단하게 수행 할 수 있습니다

cut -b 12- 

입력의 첫 11 바이트를 건너 뛰려면 .

0

bash가 있습니까?

read -d '' -a lines < input.txt 
echo "${lines[@]##*/}" 
관련 문제