変数を含む文字列を追加するには?
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";
}