1

ファイルから一致するパターンの後にコンテンツを抽出したい。

$ cat test
setenv se_boot_opt heap=0x100000 node_type=IB
namedalloc GWUP_FEATURE_MEMORY_BLOCK 0x480000000 0x16093A000
namedprint
setenv se_boot_opt2 heap=0x256000 node_type=AB

入力ファイルを 1 行ずつ処理する必要があります。各行について、以下を確認する必要があります。

  1. 行が word で始まる場合、setenv最初の 2 つの単語を省略し、その行の残りの内容を印刷/出力する必要があります。

  2. 行がで始まる場合は、wordnamedallocに置き換えます。uboot_namedalloc

出力に以下の行のみを含めたい。

heap=0x100000 node_type=IB
uboot_namedalloc GWUP_FEATURE_MEMORY_BLOCK 0x480000000 0x16093A000
namedprint
heap=0x256000 node_type=AB
4

4 に答える 4

0

パール法。

echo 'setenv se_boot_opt heap=0x100000 node_type=IB
namedalloc GWUP_FEATURE_MEMORY_BLOCK 0x480000000 0x16093A000
namedprint
setenv se_boot_opt2 heap=0x256000 node_type=AB' | perl -lape 'if (/^setenv/){s/(\w+\s){2}//}elsif(/^namedalloc/){s/namedalloc/uboot_namedalloc/}'

出力:

heap=0x100000 node_type=IB
uboot_namedalloc GWUP_FEATURE_MEMORY_BLOCK 0x480000000 0x16093A000
namedprint
heap=0x256000 node_type=AB

それほどエレガントではありませんが、機能します。

于 2013-08-06T12:17:39.093 に答える