유닉스 명령을 사용하여 파일 간에 데이터를 자르는 것을 도와줄 수 있나요?
내 파일:
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