각 파일 사이에 두 개의 줄바꿈을 사용하여 Markdown 파일을 만들려고 합니다.
다음 명령을 사용해 보았습니다.
paste -sd '\n\n' file1.md file2.md
이렇게 하면 필요한 두 개 대신 개행 문자를 사용하여 파일을 연결할 수 있습니다.
\n
각 연결 사이에 두 문자가 포함된 여러 파일을 연결하려면 어떤 명령을 사용할 수 있습니까 ?
답변1
그리고 paste
:
:|paste -sd'\n' file1.md - - file2.md
답변2
cuonglm의 답변 외에도 :
:|paste -sd'\n' $(sed $"s/\s/ - - /g" <<< $(ls -1|paste -sd" " -))
이렇게 하려면 모든 파일이 폴더 내에 연결되어 있어야 하며 가급적이면 영숫자순으로 정렬되어야 합니다. 그런 다음 출력을 파일로 리디렉션할 수 있습니다.
여기서 무슨 일이 일어나고 있는 걸까요?
:
이것이 배쉬의 진정한 힘이다. 이는 true를 반환하므로 주로 no-ops에 사용됩니다.
|
이는 왼쪽에 있는 명령의 출력을 가져오는 파이프이고관로올바른 명령의 입력에 있습니다.
$(sed $"s/\s/ - - /g" <<< $(ls -1|paste -sd" " -))
이것은 붙여넣기에 필요한 줄을 작성하는 것뿐입니다. 그것은 다음과 같습니다
file1 - - file2 - - file3 - - file4 ...
따라서 붙여넣기가 호출되면 나열된 파일의 모든 줄을 표준 출력에 씁니다. 파일을 찾을 수 없거나 "-" 파일이 호출되지 않으면 붙여넣기는 표준 입력에서 읽고 다음에서 TRUE 값을 가져옵니다. 이 값은 붙여넣기로 파이프됩니다.
일반적으로 각 파일은 탭 연산자가 추가된 표준 출력에 기록됩니다. -d"\n" 매개변수를 사용하여 붙여넣을 때 탭은 줄바꿈으로 교체됩니다.
따라서 이제 붙여넣기는 개행으로 구분된 파일을 표준 출력에 기록합니다. 붙여넣기가 "-"를 찾으면 true를 취하고 개행으로 구분된 파일만 표준 출력에 기록합니다.
답변3
awk
당신 과 함께 처리할 수 있습니다많은 종류의FNR==1
파일을 선택하고 첫 번째 파일( )을 제외한 각 파일( ) 앞에 구분 기호를 인쇄합니다 NR>1
. 그래서
awk '(NR>1 && FNR==1){printf ("\n\n")};1' file1.md file2.md ... fileN.md
파일을 연결하고 파일 사이에 지정된 구분 기호를 추가합니다.
최종 출력에서 후행 구분 기호가 마음에 들지 않는 경우, 이 특별한 경우(구분 기호는 많은 빈 줄임) 다음을 수행할 수도 있습니다( 사용 gnu sed
).
sed -s '${G;G}' file1.md file2.md ... fileN.md
답변4
최상의 솔루션은 아니지만 귀하의 경우에 적합합니다.
echo -e `cat file1.md`"\n\n"`cat file2.md`