cURLを使用して他のファイルから取得したコンテンツを含むフォームを送信します。sed
param1
別のファイルの行一致パターンを使用すると、sed
次のことが正常に動作します。
curl -d param1="$(sed -n '/matchpattern/p' file.txt)" -d param2=value2 http://example.com/submit
それでは、トラブルシューティングを始めましょう。一致するパターン自体ではなく、2つの一致するパターンの間にのみテキストを表示したいと思います。
file.txt
以下が含まれると言えます。
Bla bla bla
firstmatch
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
secondmatch
The point of using Lorem Ipsum is that it has a more-or-less normal distribution of letters, as opposed to using 'Content here, content here', making it look like readable English.
現在、多くの "beetween 2 match pattern"コマンドはおよびをsed
削除しません。firstmatch
secondmatch
私は結果が次のようになりたいです。
It is a long established fact that a reader will be distracted by the readable content of a page when looking at its layout.
答え1
これを行うための1つの方法は次のとおりです。
sed '1,/firstmatch/d;/secondmatch/,$d'
説明: 最初の行から一致する行まで最初のゲーム、削除。ラインマッチングの観点からセカンドゲーム最後の行に行き、削除してください。
答え2
最初の行に1が表示されると、他のsed
回避策は失敗します。firstmatch
簡単に保ち、単一の範囲と空の2正規表現を使用してください。
範囲の終わりを除き、範囲内のすべてを印刷します(自動印刷は無効になります)3:
sed -n '/firstmatch/,/secondmatch/{//!p;}' infile
または、より短くは、範囲内にないすべての項目を削除し、範囲の終わりを削除します。
sed '/firstmatch/,/secondmatch/!d;//d' infile
1:理由は 2番目のアドレスが正規表現の場合、スキャン終了の一致は最初のアドレスと一致する行の次の行から始まります。。
したがって、/firstmatch/
入力の最初の行は評価されず、行sed
番号と一致するため、削除され、1,/RE/
2番目の行に移動して一致することを確認します。/firstpattern/
2:いつ正規表現空(例//
:)はsed
最後のように動作します。正規表現最後に適用されたコマンドで使用された内容を指定します(アドレスまたは代替コマンドの一部として)。
3:;}
構文は最新のsed
実装に適しています。古い実装では、セミコロンや別の式の代わりに改行文字を使用してください。sed -n -e '/firstmatch/,/secondmatch/{//!p' -e '}' infile
答え3
まったく:
awk '
$1 == "secondmatch" {print_me = 0}
print_me {print}
$1 == "firstmatch {print_me = 1}
'