Cut 명령은 문자열 사이의 데이터를 찾습니다.

Cut 명령은 문자열 사이의 데이터를 찾습니다.

유닉스 명령을 사용하여 파일 간에 데이터를 자르는 것을 도와줄 수 있나요?

내 파일:

MYFILES_DATA_SOMETHING_20150428.xml
MYFILES_DATA_SOMETHING_20150429.xml.gz etcc....

나는 단지 이 파일들 사이의 날짜를 찾아 배열에 저장하고 싶습니다. 예를 들어, 나는 시도했다

echo MYFILES_DATA_SOMETHING_20150428.xml  | cut -d '_' -f4

하지만 20150428.xml이 제공됩니다. 하지만 나는 모든 파일의 날짜를 원합니다.

답변1

cut다른 작업을 통해 .구분 기호로 설정 해야 합니다 .

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | cut -d_ -f4 | cut -d. -f1
20150428

이는 다양한 도구를 사용하여 수행할 수 있습니다.

bash또는 POSIX 쉘을 사용하십시오 .

$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ var="${var##*_}"
$ echo "${var%.*}"
20150428

GNU 사용 grep:

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | grep -o '[0-9]\+'
20150428

GNU 사용 sed:

$ echo 'MYFILES_DATA_SOMETHING_20150428.xml' | sed 's/^.*_\([0-9]\+\).*$/\1/'
20150428

다음을 사용할 수도 있습니다 expr(Stéphane Chazelas 덕분에):

$ var='MYFILES_DATA_SOMETHING_20150428.xml'
$ expr "x$var" : '.*_\([^.]*\)'
20150428

사용 python:

$ python2 -c 'print "MYFILES_DATA_SOMETHING_20150428.xml".split("_")[-1].split(".")[0]'
20150428

관련 정보