리눅스 텍스트 파일에 특정 문자열을 라인 끝에 추가하는 방법이 궁금합니다.

익명 사용자의 이미지

hosts파일과 같은 형식이고 1열에 ip, 2열에 ip별 host name으로 구분되어 있습니다.

#파일 A
a.a.a.a serverAPPLE-12
b.b.b.b server32-BANANA-3cd
c.c.c.c PEACH-xfc
d.d.d.d 321cTOMATO-server

이 파일의 각 라인을 읽어서 특정단어가 있다면 해당 단어를 라인 맨 끝에 '(공백 or 탭)+특정단어' 로 추가를 하고 싶습니다.

#파일 B
a.a.a.a serverAPPLE-12 APPLE
b.b.b.b server32-BANANA-3cd BANANA
c.c.c.c PEACH-xfc PEACH
d.d.d.d 321cTOMATO-server TOMATO

파일의 라인 별 순서는 매번 달라진다고 할 때 '파일 A'를 '파일 B'로 만들 수 있는 스크립트는 어떻게 구성하면 좋을까요 ?

ymir의 이미지

세 번째 alias 를 어떻게 뽑아 낼 지에 대한 규칙이 없다면 힘들겠는데요?
일단, hostname 에서 대문자로만 된 단어를 뽑아 낸다고 한다면 대충 이런 식으로 해도 됩니다.

$ cat hosts_a 
a.a.a.a serverAPPLE-12
b.b.b.b server32-BANANA-3cd
c.c.c.c PEACH-xfc
d.d.d.d 321cTOMATO-server
$ cat hosts_a | while read -r ip host etc; do echo $ip $host $(sed 's/[^A-Z]*\([A-Z]\+\).*/\1/' <<< $host); done
a.a.a.a serverAPPLE-12 APPLE
b.b.b.b server32-BANANA-3cd BANANA
c.c.c.c PEACH-xfc PEACH
d.d.d.d 321cTOMATO-server TOMATO

되면 한다! / feel no sorrow, feel no pain, feel no hurt, there's nothing gained.. only love will then remain.. 『 Mizz 』

dontdieych의 이미지

awk 혹은 sed 가 이런 일을 잘 합니다.

좋은 문서를 링크하고 싶었으나 너무 많아서...