나는 다음 명령을 사용합니다.
tr '\n' ' ' < input.txt > output.txt
tr
새 줄을 공백으로 변환하려면 명령을 사용하십시오.
단일 파일에 대해 작동하지만 여러 파일이 있고 단일 명령을 실행해야 합니다... 텍스트 교환을 위해 다음과 유사합니다.
find /directory/. -type f -exec sed -i 's/oldtext/newtext/g' {} \;
bash 스크립트(위의 find 사용과 같은)에 추가하여 삭제할 수 있는 명령이 있습니까 \n
?
답변1
이는 다음으로 시작하는 모든 파일 이름에 대해 루프 없이도 작동합니다 file
.
perl -pe 's/\n/ /g' file*
이와 같은 작업에는 Perl을 선호합니다. sed와 동일한 구문을 가지며 이식 가능하며 이상한 sed 매개 변수가 없습니다. -i
Perl(예: sed)에 스위치를 적용하여 내부 변경을 수행 할 수도 있습니다 . ( perl -i.old -pe ....
오래된 파일은 확장자 .old로 백업됩니다. 을 사용할 수 있으며 -i
백업 파일은 보관되지 않습니다.)
원하는 경우 find
다음과 같은 명령을 사용할 수 있습니다.
$ find . -type f -name 'file*' -exec bash -c 'tr "\n" " " <$0 >$0.new' {} \;
답변2
명령을 실행하려는 파일을 간단히 반복할 수 있습니다.
for file in ~/Desktop/*.txt
do
tr '\n' ' ' < "$file" > "$file"_output.txt
done;
답변3
perl -i -lpe '$\=$"' file.data
-i
내부 편집을 켭니다.-l
세트ORS = RS = "\n"
-p
암시적 입력 파일 읽기 + 레코드 자동 인쇄를 설정합니다.$\
ORS
으로 설정되어 있습니다$" = OFS = space by default
.- 물론, Perl 명령에 대해 여러 파일 이름을 지정할 수 있습니다.
답변4
sed
찾고 있는 명령은 다음과 같습니다 .
find /directory/. -type f -exec sed -i ':begin;$!N;s/\n/ /;tbegin' {} \;