파일의 특정 줄에 쉼표로 구분된 값을 추가하는 스크립트를 작성해야 합니다.
내용이 포함된 파일이 있다고 가정해 보겠습니다.
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
-i
GNU 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
.
- text 로 시작하는 줄에서 줄 끝 표시( )를
DL1 :
찾아 다음으로 바꿉니다.$
,[email protected]
w
디스크에 파일 쓰기q
그것에 의해 편집됨
이는 줄 끝에 추가되는 최종 효과를 갖습니다.,[email protected]
DL1 :