以下は、「word」を削除して「word」を含むすべての項目を選択して、「word」を含むフルテキスト行を印刷するスクリプトです。
sed -ne 's/word//p' file.txt >> newfile.txt
「単語」が最初に表示された後にテキスト行のみを印刷し、印刷された行から「単語」を削除するにはどうすればよいですか?
私はOSXを使用しています。
以下はサンプルテキストです。
Blalala
'Omfoem From
balanf
word I want this output
word Not this output
Omfoem527
これが私の予想結果です。
I want this output
更新:必要なタスクを実行するスクリプトは次のとおりです。
sed -n 's/^.*word //p' file.txt > temp.txt
sed -n '1p' temp.txt >> newfile.txt
rm temp.txt
最初の行は「単語」を削除した後、「単語」を含むテキストの行全体を印刷し、temp.txtファイルから「単語」が表示されるすべての項目を選択します。また、「単語」の前に別のテキストが来る場合に備えて^.*を追加しました。
2行目はtemp.txtファイルの最初の行だけをnewfile.txtに印刷し、3行目はtemp.txtファイルを削除します。
最も効率的ではありませんが、動作します。
ベストアンサー1
この試み、
sed -n '/word/{n;p;q}' file
- n -> パターン空間の次の入力行を読み取るか追加します。
- p ->現在のパターンスペースを印刷します。
- q ->追加の入力を処理せずに直ちにsedスクリプトを終了します。最初の項目のみ...