次のスクリプトは、newfile.txtという名前の別のファイルで「Word1 word2」パターンが最初に発生した後にfile1.txtのテキストを印刷する方法を示しています。
sed -n -e 's/^.*Word1 word2/\1/p' file1.txt > newfile.txt
端末にこれを入力すると、何も起こりません(エラーメッセージも表示されません)。私はMac OS XでUNIXを使用しています。
ベストアンサー1
注文する
sed -n -e 's/^.*Word1 word2/\1/p' file1.txt
代替コマンドの右側には逆参照が含まれていますが、左側にはキャプチャグループがないため、明確に定義されていません。 LinuxのGNU sed 4.7では、「's」コマンドのRHSへの誤った参照\ 1」というエラーメッセージが表示されます。
「Word1 word2」が最初に発生した後にテキストを印刷する必要があるため、欲張りなので使用でき.*Word1 word2
ません.*
。代わりに、最初の文字をWord1 word2
単一の文字に変換してからその文字まで削除するトリックを使用します。未使用の文字であればすべて可能ですが、sedが各行を読むときに改行を削除し、行を印刷するときに改行を追加するので、改行を使用することをお勧めします。だから私たちは
sed -n -e 's/Word1 word2/\n/;s/^.*\n//p' file1.txt > newfile.txt
「Word1 word2」が必要な場合は、以下を使用してください。
sed -n -e 's/Word1 word2/\n&/;s/^.*\n//p' file1.txt > newfile.txt