텍스트 파일의 모든 줄 앞에 ##을 붙입니다. 해시를 추가하고 싶습니다. 터미널과 GUI를 모두

일반 텍스트 파일의 모든 줄에 해시를 추가하고 싶습니다. 터미널과 GUI를 모두 사용하는 것이 좋습니다. 그냥 끝내면됩니다.



답변

당신은 그렇게 할 수 있습니다 sed:

sed -i.bak 's/^/##/' file

이것은 줄의 시작 ( ^)을로 바꿉니다 ##.

-i.bak스위치를 사용하면 sed파일을 제자리에서 편집하지만 확장명이있는 백업 사본을 만듭니다 .bak.


답변

다음은 perl을 사용하여이 문제에 대한 해결책입니다.

perl -e 'while (<>) {print "##$_"}' < infile > outfile

답변

우리가있는 동안 :

gawk -i inplace '{print "##"$0}' infile

이것은 GNU awk 4.1.0 이상을위한 (비교적으로 새로운) 인플레 이스 편집 플러그인 을 사용합니다 .


답변

bash방법은 다음과 같습니다 .

while read -r; do printf '##%s\n' "$REPLY"; done < infile > outfile

( 에서 bash 실행 read -r다른 인수하는 것처럼 작동합니다 IFS= read -r REPLY.)

이것은 beav_35의 perl 솔루션 에서 스타일 적으로 영감을 얻었습니다. 거대한 파일에 대해서는 훨씬 빠릅니다 perl.


답변

sed -iPOSIX 표준이 아니므로 순수 주의자 인 경우 다음을 사용하려고합니다 ed.

printf ",s/^/##/\nw\nq" | ed -s file.txt

답변

perl다른 곳에서 제시하는 것보다 쉬운 방법은 다음과 같습니다 .

perl -pi -e 'print "##"' YOURFILEHERE

이것은 (ab)에 perl -p주어진 명령을 실행 한 후 줄 을 인쇄 한다는 사실을 사용합니다 -e.


답변

Ex 모드에서 Vim을 사용할 수 있습니다 :

ex -sc '%s/^/##/|x' file
  1. % 모든 줄을 선택하십시오

  2. s 대용품

  3. x 저장하고 닫습니다