すべてを削除してパターン間に単語だけを残すsedコマンドはありますか? [コピー]

すべてを削除してパターン間に単語だけを残すsedコマンドはありますか? [コピー]

sedすべて削除してパターン間に単語だけを残す命令?

私は試した:

$ sudo sed -i '/from/,/until/!d'

しかし、最初の行の下にいくつかの単語を残し、単語の代わりにパターン間に行全体を残します。

テキストでいっぱいのファイルがありますが、「from」テキスト「until」の間のテキストだけを保持し、残りはすべて削除したいと思います。

頑張る

for file in `ls`
do
    echo "`awk '/from/,/until/' $file`" > $file
done

2行を残しました。最初は上のパターンのテキストで、最初は空の新しい行です。

答え1

2つのパターン間のすべての項目を印刷し、残りはすべて削除したいように聞こえます。このような:

$ echo -e "a\nb\nc\nd\ne" | sed -ne '/b/,/d/p'
b
c
d

開始パターンと終了パターンはどこにありますか/b/?以下を使用して/d/同様のアプローチを実行することもできます。awk

$ echo -e "a\nb\nc\nd\ne" | awk '/b/,/d/'
b
c
d

模様

開始/終了パターンとして何を使用するかを決定するときは、パターンをできるだけ明確に設計する必要があります。

たとえば、

$ cat afile
something
something
one
two
some start
start
what
did
you start
done
end
the end

次に、/start/行の後に単語が続く項目を含む行のみを選択します/done/

$ sed -ne '/^start$/,/^done$/p' afile
start
what
did
you start
done

引用する

関連情報