行の特定の部分だけでsedを動作させるにはどうすればよいですか?そして、逆に、行の特定の部分でsedを動作させないようにするにはどうすればよいですか?一部の行のみを操作する方法
例:
"A a A a (A a) A (a A) a"
私は、例えば、取得するためにT
ので(
と)
間のみをすべてA
Sを交換するにはどうすればよい:
"A a A a (T a) A (a T) a"
そして、与えられた次の例入力:
"F f F f (F f) F (f F) f"
私は、例えば、取得 に
X
のが、
(
と
)
間
ないですべて
F
Sを交換するにはどうすればよい
:
「X F X F(FのF)Xを(F F) f "
私はGoogleを検索しましたが、使用できるものは見つかりませんでした。私はsedに関する一般的な質問だと思います。問題は、一般的なsedの "テンプレート"に還元されます。
- を有し、かつ、その後(特定のライン上のすべての出現に)のみ、それらの間に動作するよう
- を有し、かつ他のどこよりも、それらの間に作動するように...
- FROMとTOはある特殊なケース同じように、それはすべての操作だけでなく、置換基を有するが、また、印刷等で動作するはずの両方1.と2.
ため (「と」または「FOO」と「FOO」などの間)文字列の中の文字列 "FOO"と "BAR"の間のすべてを印刷します。
"1 2 3 BAR a b c FOO d e f BAR g a h FOO i j k BAR l m n FOO o p q"
結果はそう
" d e f i j k "
なり、それを行う方法についての一般的な例は非常にいただければ幸いです。この質問はかなり一般的だと思われますが、Googleではまだいいハウツーは見つかりません。私もこの が答えに挑戦するだろうと思います。 Perl、AWK、またはsed以外のものを使用してください。この質問は本当にsed-onlyな質問です。
私はベストを尽くしました。私のアイデアはFROMとTO(何とか)でラインを分割し、偶数パートか奇数パートかどちらかで同様に動作するように(何とか)わかっています。私がそれをする方法を知っていたら、私はここで尋ねなかったでしょう。そして、私の考え方は間違っている可能性が高いです。それはかなり難しく、以前は単純なタスクでsedを使用していました。 – mjf