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