スクリプトで変数文字列に追加するには?

スクリプトで変数文字列に追加するには?

変数を含む文字列を追加するには?

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は一致する文字列であり、この場合は1文字です)。

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

または、空でない行でのみ置き換えることができます。

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

答え2

私の友人の助けを借りて、この行を使って作業することができました!

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

解決策は、式を2つのサブ式に分割することです。すでに持っているものを変更する代わりに、2つのサブ式の間に必要なものを追加できました。

投稿して助けてくれてありがとう。

答え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";
}

関連情報