리눅스 cat 여러 파일 사이에 구분자 넣기

1 개요[ | ]

리눅스 cat 여러 파일 사이에 구분자 넣기

2 테스트 환경구성[ | ]

root@wsl:~# echo alice > a.txt
root@wsl:~# echo bob > b.txt
root@wsl:~# echo carol > c.txt

3 앞에 구분자 넣기[ | ]

3.1 각 파일명 지정[ | ]

root@wsl:~# (cat a.txt; echo ---; cat b.txt; echo ---; cat c.txt)
alice
---
bob

carol
root@wsl:~# (cat a.txt; echo ---; cat b.txt; echo ---; cat c.txt) > merged.txt
root@wsl:~# cat merged.txt
alice
---
bob
---
carol

3.2 와일드카드 파일명[ | ]

3.2.1 방법: sed[ | ]

root@zetawiki:~# sed 's|^|---\n|g' *.txt
---
alice
---
bob
---
carol

3.2.2 방법: awk[ | ]

※ 주의: 버전에 따라 안되는 경우가 있는 듯

root@zetawiki:~# awk 'BEGINFILE {print "---"}{print}' *.txt
---
alice
---
bob
---
carol

4 사이에 구분자 넣기[ | ]

4.1 방법: sed[ | ]

root@zetawiki:~# sed 's|^|---\n|' *.txt | sed ':a;N;$!ba;s|^---\n||'
alice
---
bob
---
carol

4.2 방법: awk+sed[ | ]

※ 주의: 버전에 따라 안되는 경우가 있는 듯

root@zetawiki:~#  awk 'BEGINFILE {print "---"}{print}' *.txt | sed ':a;N;$!ba;s|^---\n||'
alice
---
bob
---
carol

4.3 방법: 스크립트[ | ]

multicat.sh
#!/bin/bash
delimiter='---'
for file in "$@"; do
	cat $file
	if [ "$file" != "${@: -1}" ]; then echo $delimiter; fi
done
root@zetawiki:~# sh multicat.sh a.txt b.txt c.txt
alice
---
bob
---
carol

5 같이 보기[ | ]

문서 댓글 ({{ doc_comments.length }})
{{ comment.name }} {{ comment.created | snstime }}