명령줄을 사용하여 특정 줄에 주석을 달거나 주석 처리를 해제하는 가장 쉬운 방법

명령줄을 사용하여 특정 줄에 주석을 달거나 주석 처리를 해제하는 가장 쉬운 방법

명령줄을 사용하여 쉘/config/ruby 스크립트에 주석을 달거나 주석 처리를 해제하는 방법이 있습니까?

예를 들어:

$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf

온라인 로그인이 추가되거나 제거됩니다 #. 일반적으로 사용하지만 행의 내용을 알고 나서 찾기 및 바꾸기 작업을 수행해야 합니다. 그러면 핀이 여러 개 있을 때 잘못된 결과가 나옵니다(N번째 핀 a만 교체하려고 합니다).bla.conf1418sed

답변1

bla.conf의 2~4행에 주석을 추가합니다.

sed -i '2,4 s/^/#/' bla.conf

원하는 명령을 생성하려면 위의 내용을 comment라는 쉘 스크립트에 넣으십시오.

#!/bin/sh
sed -i "$1"' s/^/#/' "$2"

이 스크립트는 첫 번째 줄과 마지막 줄이 대시 대신 쉼표로 구분된다는 점을 제외하면 귀하의 스크립트와 동일하게 작동합니다. 예를 들어:

comment 2,4 bla.conf

주석 해제 명령도 비슷하게 생성할 수 있습니다.

고급 기능

sed라인 선택이 상당히 인상적입니다. 첫 번째 줄과 마지막 줄을 숫자로 지정하는 것 외에도 정규식을 통해 지정할 수도 있습니다. 따라서 포함 라인부터 foo포함 라인까지 모든 라인에 명령을 내리려면 bar다음을 사용하세요.

comment '/foo/,/bar/' bla.conf

BSD(OSX) 시스템

BSD sed의 경우 이 -i옵션에는 빈 문자열인 경우에도 인수가 필요합니다. 예를 들어 위의 최상위 명령을 다음으로 바꾸십시오.

sed -i '' '2,4 s/^/#/' bla.conf

그리고 스크립트의 명령을 다음으로 바꿉니다.

sed -i '' "$1"' s/^/#/' "$2"

답변2

GNU sed 사용(파일을 옵션으로 교체 -i):

sed -i '14,18 s/^/#/' bla.conf
sed -i '14,18 s/^##*//' bla.conf

답변3

프로젝트에서 재사용할 수 있는 함수가 포함된 bash_file을 생성할 수 있습니다.

#!/bin/bash

# your target file
CONFIG=./config.txt

# comment target
comment() {
  sed -i '' "s/^$1/#$1/" $CONFIG
}

# comment target
uncomment() {
  echo $1
  sed -i '' "s/^#$1/$1/" $CONFIG
}


# Use it so:
uncomment enable_uart
comment arm_freq

답변4

사용행복하다(이전 Perl_6)


다음 줄을 주석 처리합니다.

~$ raku -ne 'if (6 <= ++$ <= 8) { put S/^/#/ } else { $_.put };' alpha10.txt

#OR

~$ raku -ne '(6 <= ++$ <= 8) ?? put S/^/#/ !! $_.put;' alpha10.txt

#OR

~$ raku -ne 'put (6 <= ++$ <= 8) ?? S/^/#/ !! $_;' alpha10.txt

#OR

~$ raku -pe 'if (6 <= ++$ <= 8) { s/^/#/ };' alpha10.txt

입력 예:

~$ raku -e 'print "a\nb\nc\nd\ne\nf\ng\nh\ni\nj\n";' > alpha10.txt

예제 출력:

a
b
c
d
e
#f
#g
#h
i
j

if이러한 답변(위 및 아래)은 Raku의 조건부 구문( / else또는 삼항: "Test ??True !!False") 을 사용합니다 . 자세한 내용은 아래 URL을 참조하세요. 연결 <=불평등에 주목하세요. 또한 조건 주위의 괄호는 중복됩니다. 인용하는 데 문제가 있는 경우 , (수량자 유무에 관계없이)를 통해 #단일 문자, 사용자 정의 문자 클래스로 octothorpe를 입력 할 수 있습니다.<[#]>


다음 줄의 주석 처리를 해제하세요.

~$ raku -ne 'if (6 <= ++$ <= 8) { put S/^ \s* "#" // } else { $_.put };' alpha10commented.txt

#OR

~$ raku -ne '(6 <= ++$ <= 8) ?? put S/^ \s* "#"// !! $_.put;' alpha10commented.txt

#OR

~$ raku -ne 'put (6 <= ++$ <= 8) ?? S/^ \s* "#" // !! $_;' alpha10commented.txt

#OR

~$ raku -pe 'if (6 <= ++$ <= 8) { s/^ \s* "#" // };' alpha10commented.txt

입력 예:

~$ raku -e 'print "a\nb\nc\nd\ne\n#f\n#g\n#h\ni\nj\n";' > alpha10commented.txt

예제 출력:

a
b
c
d
e
f
g
h
i
j

https://docs.raku.org/syntax/if
https://docs.raku.org/언어/operators#index-entry-operator_ternary
https://raku.org

관련 정보