스크립트에서 변수 문자열에 추가하는 방법은 무엇입니까?

스크립트에서 변수 문자열에 추가하는 방법은 무엇입니까?

변수가 포함된 문자열을 추가하는 방법은 무엇입니까?

sed 's/MIMG109AL1ARP\t[[:alnum:]]*\t/ /g'

처음에는 생각했지만 sed아무것도 바꾸고 싶지 않고 첫 줄 뒤에 뭔가를 추가하고 싶습니다.

몇 가지 예시 문자열은 다음과 같습니다.

MIMG109AL1ARP     PQHDO0542I7537

MIMG109AL1ARP     PQHDO0372I2435

MIMG109AL1LLL     QRHDO0382I2342

MIMG109AL1LLL     PQHDO362I2345

하지만 나는 그들이 다음과 같이 보이길 원합니다:

MIMG109AL1ARP     PQHDO0542I7537     appendagehere

MIMG109AL1ARP     PQHDO0372I2435     appendagehere

MIMG109AL1LLL     QRHDO0382I2342     appendage2here

MIMG109AL1LLL     PQHDO362I2345      appendage2here

내 질문을 더 명확하게하기 위해 파일을 편집했습니다! 모든 행이 아닌 개별 행을 별도로 추가해야 합니다. 지금까지 귀하의 의견에 감사드립니다. 도움이나 리디렉션을 보내주시면 감사하겠습니다!

답변1

sed에서는 $줄의 끝을 나타냅니다. 그래서 당신은 말할 수 있습니다

sed -e 's/$/\twhatever/'

비어 있지 않은 줄에만 추가하고 빈 줄은 비워두려면 다음을 사용하세요(여기서 &sed는 일치하는 문자열이며 이 경우에는 한 문자입니다).

sed -e 's/.$/&\twhatever/'

또는 비어 있지 않은 줄에서만 바꿀 수 있습니다.

sed -e '/./s/$/\twhatever/'

답변2

내 친구의 도움으로 이 라인을 사용하여 작업할 수 있었습니다!

sed 's/\(MIMG109AL1ARP..*\)\($\)/\1\twhatIwant\2/g'

해결책은 표현식을 두 개의 하위 표현식으로 나누는 것입니다. 이미 가지고 있는 것을 변경하는 대신 두 하위 표현식 사이에 원하는 것을 추가할 수 있었습니다.

게시하고 도와주셔서 감사합니다.

답변3

9가지 모드와 첨부 파일만 처리하면 다음을 시도해 볼 수 있습니다.

#! /usr/bin/perl

use strict;

my %append = ( # matchregex       => appendstring
               qr/^MIMG109AL1ARP/ => 'appendagehere',
               qr/^MIMG109AL1LLL/ => 'appendage2here',
               # more here
             );

while (<>) {
   chomp;
   foreach my $re (keys %append) {
       if (m/$re/) {
           s/$/\t$append{$re}/;
           last;
       }
   }
   print $_, "\n";
}

관련 정보