파일의 특정 줄에 데이터 추가

파일의 특정 줄에 데이터 추가

파일의 특정 줄에 쉼표로 구분된 값을 추가하는 스크립트를 작성해야 합니다.

내용이 포함된 파일이 있다고 가정해 보겠습니다.

DL1 : [email protected],[email protected],[email protected]
DL2 : [email protected],[email protected],[email protected]

[email protected]추가 해야 해요DL1 :

답변1

( )로 시작하는 줄을 일치시키고 DL1 :그 끝에 ( )를 추가하려면:,[email protected]$

$ sed '/^DL1 :/ s/$/,[email protected]/' file
DL1 : [email protected],[email protected],[email protected],[email protected]
DL2 : [email protected],[email protected],[email protected]

요구 사항과 버전에 따라 내부 변환을 sed추가할 수 있습니다 .-i

답변2

요구 사항을 충족하려면 다음 방법을 사용하십시오 awk.

awk '$1 == "DL1" {$0 = $0 ",[email protected]"} 1' file

-iGNU awk를 사용하면 해당 옵션을 내부 편집에 사용할 수 있습니다 . 그렇지 않으면 출력이 포함된 임시 파일을 만들어야 합니다.


이 기능을 쉘 스크립트에 추가하려면 awk 변수를 사용하여 검색 및 입력을 전달할 수 있습니다. 그것은 다음과 같습니다:

#!/bin/sh

search=$1
addition=$2

awk -v s="$search" -v a="$addition" '$1 == s {$0 = $0 "," a} 1' file

답변3

~을 위한표준 UNIX 편집됨:

printf '%s\n' '/^DL1 :/ s/$/,[email protected]/' w q | ed -s input

위의 내용은 개행으로 구분된 세 가지 명령을 인쇄합니다 ed.

  1. text 로 시작하는 줄에서 줄 끝 표시( )를 DL1 :찾아 다음으로 바꿉니다.$,[email protected]
  2. w디스크에 파일 쓰기
  3. q그것에 의해 편집됨

이는 줄 끝에 추가되는 최종 효과를 갖습니다.,[email protected]DL1 :

관련 정보