주어진 텍스트 파일에서 모든 공백을 제거하고 싶습니다. 이에 사용할 수있는 셸 명령이 있습니까? 또는 sed
이 목적 으로 사용하는 방법 .
나는 아래와 같은 것을 원한다.
$ cat hello.txt | sed ....
나는 이것을 시도했다 : cat hello.txt | sed 's/ //g'
. 그러나 그것은 탭이 아닌 공백 만 제거합니다.
답변:
$ man tr
NAME
tr - translate or delete characters
SYNOPSIS
tr [OPTION]... SET1 [SET2]
DESCRIPTION
Translate, squeeze, and/or delete characters from standard
input, writing to standard output.
줄 바꿈을 포함하여 모든 공백을 지우려면 다음을 시도하십시오.
cat file.txt | tr -d " \t\n\r"
tr ( htompkins 주석에 대한 크레딧)에 정의 된 문자 클래스를 사용할 수도 있습니다 .
cat file.txt | tr -d "[:space:]"
예를 들어 수평 공백 만 지우려면 다음을 수행하십시오.
cat file.txt | tr -d "[:blank:]"
tr
. 예 : 모든 공백 cat file.txt | tr -d "[:space:]"
을 삭제하려면 : 모든 수평 공백을 삭제하려면 :cat file.txt | tr -d "[:blank:]"
내 의견보다 훨씬 간단합니다.
sed -r 's/\s+//g' filename
다른 줄로 변경하는 것과 같은 정보를 잃지 않고 공간을 지우려면 sed를 사용할 수 있다고 생각합니다.
cat hello.txt | sed '/^$/d;s/[[:blank:]]//g'
tr -d " " < infile.txt > outfile.txt
^$
"줄의 시작"(^)과 "줄의 끝"($) 바로 뒤를 찾기 때문에 빈 줄과 일치합니다.
이 시도:
tr -d " \t" <filename
자세한 내용은 tr (1) 맨 페이지를 참조하십시오.
야, 터미널에서 그냥 python test.py.
f = open('/home/hduser/Desktop/data.csv' , 'r')
x = f.read().split()
f.close()
y = ' '.join(x)
f = open('/home/hduser/Desktop/data.csv','w')
f.write(y)
f.close()
f.read().strip("\t\n\r ")
더 효율적이지 않습니까?
이 답변은 다른 답변과 유사하지만 일부 사람들이 출력이 STDOUT으로 이동한다고 불평했기 때문에 원본 파일로 리디렉션하고 덮어 쓰도록 제안합니다. 나는 일반적으로 이것을 제안하지 않지만 때로는 빠르고 더러운 일을 제안합니다.
cat file.txt | tr -d " \t\n\r" > file.txt