Unix를 사용하여 두 번째 줄의 시작 부분에 문자열 추가

Unix를 사용하여 두 번째 줄의 시작 부분에 문자열 추가

텍스트 파일의 두 번째 줄 시작 부분에 문자열을 추가하고 싶습니다. 예를 들면 다음과 같습니다.

1
2
3

다음과 같아야 합니다:

1
42
3

이 문제를 처리하는 방법에 대한 아이디어가 있습니까?

답변1

sed를 사용하여 이 작업을 수행할 수 있습니다. GNU sed가 있는 경우 -i이를 사용하여 다음과 같이 수정할 수 있습니다.

sed -i -e '2s/^/4/' source

sed이는 in-place( )를 수정 하고 line()의 시작 부분을 a와 일치시키기 위해 -i정규식 replacement()를 수행하도록 지시하며 , 이 작업은 행 번호에서만 수행됩니다 . 이 모든 작업은 다음과 같은 파일에서 수행됩니다.s/^/4/^42source

답변2

POSIX 하나:

printf '\n4' | paste -d'\0' - file

답변3

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

ex -sc '2s/^/4/|x' file
  1. 2두 번째 행 선택

  2. s바꾸다

  3. x저장하고 닫습니다

답변4

강제 awk솔루션:

awk -v prepend="<your-text-here>" 'NR==2{print prepend $0;next};1' file

또는 제안된 환경 변수 솔루션@cuonglm다음 의견:

prepend="<your-text-here>" awk 'NR==2{print ENVIRON["prepend"] $0;next};1' file
  • -v prepend=...호출 시 변수에 awk지정된 값을 할당합니다 prepend.
  • NR==2두 번째 줄에 다음 명령을 적용합니다.
  • print prepend $0next이 줄에 추가하기 전에 다음 줄로 이동하는 것을 잊지 마세요 .
  • 마지막은 전체 줄을 인쇄하는 1단축키입니다 .{print $0}

관련 정보