사용자 도구

사이트 도구


linux:sed

Linux sed

파일의 내용 변경

  • -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

끝에 붙은 새줄 기호 제거

# 마지막 새줄만 제거
cat x | sed -z '$ s/\n$//'
 
# 끝에 있는 여러 새줄 기호 모두 제거(중간은 그대로 둠)
sed -Ez '$ s/\n+$//'

줄 처음/끝에 문자열 넣기

# 줄 처음
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
  • 클립보드 텍스트의 줄 끝에 모두 쉼표 붙여서 다시 클립보드에 넣기 / xclip
xclip -o -sel clip | sed -Ez '$ s/\n+$//' \
| sed 's/$/,/' \
| sed '$ s/,$//' \
| xclip -i -sel clip

desed

참조

linux/sed.txt · 마지막으로 수정됨: 2022/05/11 12:58 저자 kwon37xi