변수가 포함된 문자열을 추가하는 방법은 무엇입니까?
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";
}