파일에서 일치하는 줄을 선택하고 싶습니다.
# Mode: org
#
파일 프로그래밍 언어의 주석 문자가 될 수 있습니다.
또한 , in은 bash 스크립트를 사용하여 앞에 공백을 추가하여 or 중 하나 #
일 수도 있습니다 .;
!
예
# Mode: org
;; Mode: org
!! Mode: org
파일 확장자에서 언어를 찾을 수 있습니다
.el emacs
.c c
.cc c++
.sh bash
.rc bash
.f fortran
.F fortran
.f90 fortran
.texi texinfo
.tex tex
이것은 내가 현재 사용하는 bash 기능입니다.
capture ()
{
local efile="$1"
local begorg endorg charcl
impl="1"
if [ "$impl" = "1" ]; then
charcl='^[[:space:]]*(#|;|!)+[[:space:]]*'
elif [ "$impl" = "2" ]; then
charcl='^[[:space:]]*(//|@c)[[:space:]]*'
fi
begorg="${charcl}"'Mode: org$'
endorg="${charcl}"'# End of org$'
awk -v ccls="$charcl" -v bego="$begorg" -v endo="$endorg" \
'$0 ~ bego { found=1; next }
$0 ~ endo { found=0; }
found { sub(/ccls/,""); print }' "$efile"
}
이게 더 좋겠지 awk
만 패턴을 포함하는 방법에 문제가 있습니다.
/<pattern>/ { set variable to A }
/other pattern/ { set variable to B }
... use variable in sub