====== Linux sed ======
* ''sed'' 파일 스트림에 명령을 수행하고 그 결과를 표준출력으로 내보낸다. 원본 파일에는 변화를 주지 않는다.
* see [[linux:sd|sd - search and displace]]
* [[https://mug896.github.io/sed-stream-editor/|sed stream editor]]
* [[https://wiki.kldp.org/HOWTO/html/Adv-Bash-Scr-HOWTO/sedawk.html|Sed 와 Awk 에 대한 간단한 입문서]]
* [[http://www.incodom.kr/Linux/%EA%B8%B0%EB%B3%B8%EB%AA%85%EB%A0%B9%EC%96%B4/sed|Linux/기본명령어/sed]]
* [[http://korea.gnu.org/manual/release/sed/|SED 스트림 에디터]]
* [[https://www.ibm.com/support/knowledgecenter/ko/ssw_aix_72/com.ibm.aix.cmds5/sed.htm|IBM Knowledge Center - sed 명령]]
* [[https://www.tecmint.com/linux-sed-command-tips-tricks/|15 Useful 'sed' Command Tips and Tricks for Daily Linux System Administration Tasks]]
===== 파일의 내용 변경 =====
* ''-i.bak'' : 파일을 잠시 ''.bak'' 확장자를 가진 파일로 복제 한뒤에 변경사항을 적용하고 저장한다.
* ''-i'' 만 하면, 백업파일 없이 원본 파일을 즉시 변경한다.
* 여러 항목을 한번에 바꾸려면 ''-e'' 옵션을 계속 추가한다.
sed -i.bak -e "s/A/X/g" -e "s/B/Y/g" -e "s/C/Z/g" /path/to/file.txt
===== 특정 영역에만 변경 적용 =====
# 1 줄만 변경
sed '1 s/a/b/g' file.txt
# 2~4 줄만 변경
sed '2,4 s/a/b/g' file.txt
===== 끝에 붙은 새줄 기호 제거 =====
* https://stackoverflow.com/a/58129173/1051402
# 마지막 새줄만 제거
cat x | sed -z '$ s/\n$//'
# 끝에 있는 여러 새줄 기호 모두 제거(중간은 그대로 둠)
sed -Ez '$ s/\n+$//'
===== 줄 처음/끝에 문자열 넣기 =====
* [[https://linuxconfig.org/add-character-to-the-beginning-of-each-line-using-sed|Add character to the beginning of each line using sed - LinuxConfig.org]]
# 줄 처음
sed 's/^/원하는텍스트/' file.txt
# 줄 끝
sed 's/$/원하는텍스트/' file.txt
# 마지막 줄의 마지막 쉼표 제거
sed '$ s/,$//'
# 마지막 줄에 2줄 추가 - $ : 마지막줄, a : append
sed -i -e '$a\
foo1 bar1\
foo2 bar2' file.txt
# 혹은 유사하게, TEXTTOEND 를 마지막줄에 추가
sed -i -e '$aTEXTTOEND' file.txt
* 클립보드 텍스트의 줄 끝에 모두 쉼표 붙여서 다시 클립보드에 넣기 / [[linux:xclip|xclip]]
xclip -o -sel clip | sed -Ez '$ s/\n+$//' \
| sed 's/$/,/' \
| sed '$ s/,$//' \
| xclip -i -sel clip
===== desed =====
* [[https://github.com/SoptikHa2/desed|desed]]
* `sed` debugging
===== 참조 =====
* [[https://jhnyang.tistory.com/287|[리눅스/유닉스] 유용 명령어 sed를 살펴보자! sed 명령어 사용법과 예시, 패턴 스페이스와 홀드 스페이스, 유용 표현]]
* [[https://www.linuxteck.com/sed-commands-in-linux/|12 Useful 'sed' Commands In Linux | LinuxTeck]]