구분 기호 앞의 마지막 문자 제거

구분 기호 앞의 마지막 문자 제거

입력 파일 내용은 다음과 같습니다.

header;header;header;header
2018/06/04;141000;bla;bla

원하는 출력:

header;header;header;header
2018/06/04;1410;bla;bla

다음 명령이 있습니다sed

sed -i 's/.//16' $inputFile

하지만 다음과 같이 내 제목을 제거하십시오.

header;hder;header;header
2018/06/04;1410;bla;bla

이를 방지하기 위해 다음을 시도했습니다.

tail -n +2 | sed -i 's/.//16' $inputFile

하지만 작동하지 않습니다. 미리 감사드립니다

답변1

사용 awk:

awk -F ';' -v OFS=';' 'NR > 1 { sub("..$", "", $2) }; 1' <"$inputFile"

;이렇게 하면 마지막 두 문자가 제거되어 첫 번째 줄을 제외한 모든 입력 줄의 두 번째 구분 필드가 수정됩니다.

후행을 사용하면 1각 줄이 출력됩니다(교체 가능 { print }).

출력을 새 파일로 리디렉션할 수 있으며, 나중에 원본 파일을 대체할 수 있습니다.

답변2

두 번째 구분 기호 앞의 두 문자를 제거하려면(예와 같이 처음 두 구분 기호 앞에 항상 최소 두 개의 문자가 있다고 가정) 다음을 사용하세요.

sed -i -- '1!s/..;/;/2' "$inputFile"

1!제목(첫 번째) 줄을 변경 하지 마세요 .
나머지는 구분 기호 앞의 두 문자를 제거합니다 ;.

관련 정보