파일의 지정된 줄 시작 부분에 문자를 삽입합니다.

파일의 지정된 줄 시작 부분에 문자를 삽입합니다.

텍스트 파일의 지정된 줄 시작 부분에 문자(#)를 삽입해야 합니다.

입력 예:

Hellow1
Hellow2
Hellow3

원하는 출력

Hellow1
#Hellow2
Hellow3

답변1

#단어로 시작하는 줄에 a를 삽입하려면 다음을 Hellow2사용할 수 있습니다 sed.

sed '/^Hellow2/ s/./#&/' input.txt >output.txt

#텍스트의 두 번째 줄 시작 부분에 a를 삽입하려면 다음을 사용할 수 있습니다 sed.

sed '2 s/./#&/' input.txt >output.txt

&패턴과 일치하는 것으로 대체됩니다 .

sed -i나는 당신이 무엇을 사용하고 있는지 모르고 sed대부분의 구현이 sed플래그를 처리하는 데 호환되지 않는 방법을 사용하기 때문에 (제자리에서 편집) 사용을 피했습니다.sed -i(제자리에서 편집)를 사용하여 이식성을 달성하는 방법은 무엇입니까?).

대신 위와 같이 대체한 다음

mv output.txt input.txt

원본 데이터를 결과로 바꾸려는 경우. 또한 결과가 올바른지 확인할 수 있는 기회도 제공됩니다.

다음과 동일 awk:

awk '/^Hellow2/ { $0 = "#" $0 }; 1' input.txt >output.txt

awk 'NR == 2 { $0 = "#" $0 }; 1' input.txt >output.txt

답변2

귀하의 질문이 불분명합니다. 특정 텍스트에 주석을 달고 싶다고 가정해 보겠습니다.

sed -i.bak 's/^\(Hellow2\)$/#\1/'

이는 문자열 "Hellow2"와 정확하게 일치하는 모든 줄을 내부 교체를 수행하고 이를 # 다음에 일치하는 줄로 바꿉니다.

답변3

s특정 줄에 명령을 적용하는 일반적인 패턴은 0, 1 또는 2개의 주소를 나타내는 것 [2addr]s... 입니다 . 2addr즉, 패턴과 일치하는 줄 앞에 #을 삽입하려는 경우:

sed -e '/pattern/s/^/#/'

온라인으로 변경하려면 $n:

sed -e "${n}s/^/#/"  # (This requires that $n be a well formatted number)

$n 행의 범위를 $m까지 일치시키려면 다음을 수행하십시오.

sed -e "${n},${m}s/^/#/"  # $n and $m must be well formed numbers.  eg '2'

pattern1일치하는 줄과 "pattern2"와 일치하는 줄 사이의 모든 줄을 일치시키려면 다음을 수행하세요 .

sed -e '/pattern1/,/pattern2/s/^/#/' 

답변4

당신은 이것을 할 수 있습니다 awk:

awk '{if ($0 == "Hellow2") print "#"$0; else print $0}' yourfile > outputfile

관련 정보