입력 파일 내용은 다음과 같습니다.
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!
제목(첫 번째) 줄을 변경 하지 마세요 .
나머지는 구분 기호 앞의 두 문자를 제거합니다 ;
.