명령줄을 사용하여 쉘/config/ruby 스크립트에 주석을 달거나 주석 처리를 해제하는 방법이 있습니까?
예를 들어:
$ comment 14-18 bla.conf
$ uncomment 14-18 bla.conf
온라인 로그인이 추가되거나 제거됩니다 #
. 일반적으로 사용하지만 행의 내용을 알고 나서 찾기 및 바꾸기 작업을 수행해야 합니다. 그러면 핀이 여러 개 있을 때 잘못된 결과가 나옵니다(N번째 핀 a만 교체하려고 합니다).bla.conf
14
18
sed
답변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