명령을 실행하면 cat file | grep pattern
여러 줄의 출력이 표시됩니다. 어떻게 효과적으로 각을 대체 한 줄에 모든 라인을 연결 않습니다 "\n"
와 "\" "
(최종 "
공백)?
cat file | grep pattern | xargs sed s/\n/ /g
나를 위해 작동하지 않습니다.
답변
tr '\n' ' '
모든 개행 문자를 공백으로 변환하는 데 사용하십시오 .
$ grep pattern file | tr '\n' ' '
참고 : grep
파일을 읽고cat
연결합니다. 하지마 cat file | grep
!
편집하다:
tr
단일 문자 번역 만 처리 할 수 있습니다. 다음 awk
과 같이 출력 레코드 구분 기호를 변경하는 데 사용할 수 있습니다 .
$ grep pattern file | awk '{print}' ORS='" '
이것은 다음과 같이 변형됩니다.
one
two
three
에:
one" two" three"
답변
파이핑 출력 xargs
은 각 출력 라인을 공백이있는 단일 라인으로 연결합니다.
grep pattern file | xargs
또는 모든 명령 (예 : ls | xargs
. xargs
출력 의 기본 제한 은 ~ 4096 자이지만 예를 들어 늘릴 수 있습니다. xargs -s 8192
.
답변
echo
따옴표없이 bash에서 캐리지 리턴, 탭 및 여러 공백을 제거하십시오.
echo $(cat file)
답변
이것은 당신이 원하는 것일 수 있습니다
cat file | grep pattern | paste -sd' '
편집 내용에 대해 이것이 무엇을 의미하는지 잘 모르겠습니다.
cat file | grep pattern | paste -sd'~' | sed -e 's/~/" "/g'
( ~
에서 발생하지 않는 것으로 가정 file
)
답변
쉼표로 구분하여 출력을 생성하는 예입니다. 필요한 구분 기호로 쉼표를 바꿀 수 있습니다.
cat <<EOD | xargs | sed 's/ /,/g'
> 1
> 2
> 3
> 4
> 5
> EOD
생산 :
1,2,3,4,5
답변
다음은 ex
편집기를 사용하는 방법 입니다 ( Vim의 일부 ).
-
J 모든 라인 OIN P의 표준 출력 RINT :
$ ex +%j +%p -scq! file
-
J (파일의) 모든 라인에서 적절한 OIN :
$ ex +%j -scwq file
참고 : 파일 자체의 모든 줄을 연결합니다!
답변
이 문제를 해결하는 가장 빠르고 쉬운 방법은 다음과 같습니다.
줄 바꾸기 문자 \n
를 공백 으로 바꾸 려면 :
xargs < file
xargs
행당 문자 수와 모든 문자 수를 제한하는 자체 제한이 있지만이를 늘릴 수 있습니다. 이 명령을 실행하면 자세한 내용을 확인할 수 있습니다 xargs --show-limits
.man xargs
한 문자를 다른 문자 로 바꾸고 싶을 때 :
tr '\n' ' ' < file
한 문자를 여러 문자 로 바꾸고 싶을 때 :
tr '\n' '~' < file | sed s/~/many_characters/g
먼저 \n
물결표 의 줄 바꿈 문자 를 바꾸 ~
거나 텍스트에없는 다른 고유 한 문자를 선택한 다음 물결표 문자를 다른 문자 ( many_characters
)로 바꾸고 각 물결표 (flag g
) 에 대해 문자를 바꿉니다 .