このソースfile.cがあります。
#include <dir/header1>
#include <dir/header2>
#include <dir/header3>
...
私はdirの後のヘッダーだけを一致させたいのです(例header1
:)。私はこうする:
$ sed -En 's/\/(.*)>/\1/p' file.c
ただし、次のように出力されます。
#include <dirheader1
/
なので、行の先頭から一致しますが、文字別にグループ化したいです(したがってs/\/...
)。だから私は次のことを試しました。
$ sed -En 's/<.*\/(.*)>/\1/p' file.c
これらのどれも役に立ちません。それでは、それを達成する方法は何ですか?
ベストアンサー1
headerx
コマンドを使用して表示された3行のビットのみを抽出するには、次の手順を実行する必要があります。s///
sed
削除する不要なラインのすべてのビット。
不要な行のビットは、先頭の#include <dir/
最初の文字列と>
最後の最後の文字列です。これはすべて正規表現と一致する必要があります。次に、キャプチャグループを使用して、初期文字列と最終文字列の間のビットを置き換えます。ワイヤーキャプチャされた文字列として:
sed -n 's,.*/\(.*\)>,\1,p' file.c
またはより具体的に言えば、
sed -n 's,^#include <dir/\(.*\)>,\1,p' file.c