텍스트 파일의 지정된 줄 시작 부분에 문자(#)를 삽입해야 합니다.
입력 예:
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