파일 이름에서 파일 내용 바꾸기

파일 이름에서 파일 내용 바꾸기

파일 이름에 따라 파일 내용이 변경되는 스크립트를 준비하고 싶습니다.

ABC_20161027220153.txt파일 이름이 있고 파일 내용이 다음과 같다고 가정해 보겠습니다.

2000|2000_ABC|04|||0000000000||

아래와 같이 파일 내용이 변경되는 스크립트를 만들고 싶습니다.

2000|2000_ABC|04|20161027|27.10.2016 22.01.53|0000000000||

어떻게 해야 하나요?

답변1

이를 위한 몇 가지 단계가 있습니다:

  1. awk는 변수의 현재 파일 이름을 알고 있습니다.FILENAME
  2. 파일 이름을 디코딩된 요소로 분할하지 않은 경우(여기서는 각각의 새 입력 파일의 첫 번째 줄에서 하드코딩이 수행됨) 이 substr함수를 사용하여 도움을 줍니다.
  3. 각 입력 라인에 대해 이전 명령문은 us 의 |기호를 분할하여 BEGIN필드 4와 5를 새 값으로 대체했습니다.
  4. 재구성된 라인 인쇄

그것들을 하나로 합치면(저는 이름을 "abc.awk"로 지정했습니다):

BEGIN { OFS=FS="|" }

{
  if (FNR == 1) {
    f4=substr(FILENAME, index(FILENAME, "_") + 1, 8);
    f5a=substr(FILENAME, index(FILENAME, "_") + 9, 6);
    f5=substr(f4, 7, 2) "." substr(f4, 5, 2) "." substr(f4, 1, 4) " " \
        substr(f5a, 1, 2) "." substr(f5a, 3, 2) "." substr(f5a, 5, 2);
  }

  $4=f4
  $5=f5
  print $0
}

$ awk -f abc.awk ABC_20161027220153.txt
2000|2000_ABC|04|20161027|27.10.2016 22.01.53|0000000000||

관련 정보