같은 줄의 다른 공백을 제거하지 않고 아래 줄의 첫 번째 공백만 제거하려면 어떻게 해야 합니까?
입력 예:
2015-04-18 10:21:59 10 05430 -9999 -9999 000000000000
예제 출력:
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
답변1
다음을 위해 사용할 수 있습니다 sed
:
sed 's/ //' infile >outfile
이렇게 하면 파일의 모든 줄에 대체가 적용되어 infile
첫 번째 공백 문자가 빈 공백으로 대체됩니다(즉, 제거). 출력은 파일에 저장됩니다 outfile
. 를 사용하면 sed 's/ //N'
(여기서 은 N
1에서 9 사이의 정수) 제거할 공백을 선택할 수 있습니다.
행이 쉘 변수에 있으면 다음을 사용할 수 있습니다
var="${var/ /}"
이는 명령 과 동일한 작업을 수행하기 위해 ${parameter/pattern/string}
in 매개변수 확장을 사용하지만 . 이 예에서는 결과 문자열이 다시 저장됩니다 .bash
sed
$var
$var
답변2
사용 awk
:
> awk '{print $1$2,$3,$4,$5,$6,$7}' yourfile > outputfile
산출:
> cat outputfile
2015-04-1810:21:59 10 05430 -9999 -9999 000000000000
줄의 공백을 제거하고 공백을 그대로 유지할 수 있습니다.
가설:입력 파일에는 다음이 포함되어야 합니다.
- 선행 공백 없음
- 연속 공백 없음
- 라벨 없음
- 총 7칸 미만
가정 중 하나라도 위반되면 결과는 다음과 같습니다.정확하지 않을 것이다
답변3
Ex 모드에서 Vim을 사용할 수 있습니다:
ex -sc '%s/ //|x' file
%
모든 행 선택s
바꾸다x
저장하고 닫습니다
답변4
이것은 매우 간단한 질문입니다.
sed -i 's/ //' /path/to/file
추가하지 않고 이 명령을 시도해 보세요.에스sed 표현식의 끝에.
각 줄의 첫 번째 공백만 제거됩니다.