$ echo -e 'CH12\nCH23au' | sed '/^CH/s=^=<b>='
<b>CH12
<b>CH23au
CHbyで始まる行を照合できることはわかって^CHいますが、どのようにして複数のパターンを照合できますか?
例:
入力:
CH12
CH23au
出力:
CH12
<b>CH23au
どのようにのみ配置する<b>がある場合^CHやauラインに?
$ echo -e 'CH12\nCH23au' | sed '/^CH/s=^=<b>='
<b>CH12
<b>CH23au
CHbyで始まる行を照合できることはわかって^CHいますが、どのようにして複数のパターンを照合できますか?
例:
入力:
CH12
CH23au
出力:
CH12
<b>CH23au
どのようにのみ配置する<b>がある場合^CHやauラインに?
回答:
CHが行の先頭になければならない場合、CHおよびの順序auは固定されているので、を探すことができます^CH.*au。
$ echo -e 'CH12\nCH23au' | sed '/^CH.*au/s=^=<b>='
CH12
<b>CH23au
$
2つのパターンの順序が固定されていない場合、次のようなことができます
sed -e '/pattern1/{;/pattern2/s/old/new/;}'
しかし、perlソリューション
perl -pe 'if (/pattern1/ && /pattern2/) {s/old/new/;}'
おそらくもっと読みやすいです。
別のアプローチ:
sed -e '/^CH/!b' -e '/au/!b' -e 's/^/<b>/'
b(最後に分岐任意のラベル引数を与えられていない場合は)のようなものであるcontinueか、next他の言語で。したがって、上記は次のようになります。
for (; line = readline(); print line) { # The implicit loop in sed
if (!/^CH/) continue;
if (!/au/) continue;
line =~ s/^/<b>/
}