オプション1

オプション1

次の行を含むテキストファイルがあります。

From:   arkit Corp. <[email protected]>

Sent:   Friday, June 16, 2017 6:35 PM

To:     User Name

Subject:        arkit Corp.: activity alert.


                 <http:// arkit.co.in/>

ACTIVITY ALERT FOR:

Ravi


https:// arkit.co.in/ Path Read (03/07/2017)

Path: /website/upload/file.txt


https:// arkit.co.in/ Path Read (04/07/2017)

Path: /website/upload/file1.txt



        Copyright ▒ 2017 arkit Corp.. All Rights Reserved.

次のように印刷したいと思います。

https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt

並べて印刷する方法を提案できる人はいますか?

答え1

メッセージ全体を解析するには、次のように「アドレス」を使用します。

sed -n '/https:/h;/Path:/{H;g;s/\n/ /p;}' yourfile

デフォルトでは出力されません(-n)。それで始まる行をhttps:メンテナンスバッファに入れてから、Path:その行をメンテナンスバッファに追加し、パターン空間に移動し、改行を空白に置き換えます。

または他の方法:

sed -e '/^https:/!d;:a' -e '$!N;/Path:/!ba' -e 's/\n\n*/ /' yourfile

つまり、行がhttps:()で始まらない場合は削除してください/^https:/!d。それ以外の場合は、行を追加するまでループ(:a)を開始して新しい行(存在する場合)を追加します()。 。最後に、すべてを1行に入れるために、改行を空白に置き換えます()。$!NPath:/Path:/!bas/\n\n*/ /

答え2

オプション1

空行を壊したい場合は、

awk '{printf $0; printf ($0=="")? "\n" : " "}' /path/to/file.txt

説明する

  • printf $0:現在行を印刷します(改行なし)。
  • printf ($0=="")? "\n" : " ":現在行が空の場合は($0=="")?改行文字を印刷し"\n"、そうでない場合は空白を印刷します" "
  • これにより、最後の行に末尾のスペースが印刷され、これが問題になる可能性があります。

オプション2

しかし、3行目だけを切りたい場合は、

awk '{printf $0; printf (NR%3=="0")? "\n" : " "}' /path/to/file.txt

説明する

  • (NR%3=="0"):ここの条件は、行番号NRmodが30かどうかをテストします。つまり、3行の入力行ごとに改行文字を印刷し、それ以外の場合は空白のみを印刷します。

答え3

方法1:短絡モードでPerlを呼び出し-00、ORS = \ nを設定し、-l明示的な印刷を使用してファイル読み取りモードを有効にします-n。 https://で始まる現在のレコードを選択し、$_そのレコードの終わりに次のレコードを埋めます<>。最後に、追加された現在のレコードの改行文字は削除され、残りは標準出力として印刷されます。 ORSは現在のレコードに追加されます。

perl -ln -00e 's/$/$".<>/e and print tr/\n//dr if m|^https://|' file.txt

この方法では、https://行が見つかった場合はループを設定し、見つかった空の行を空でない最初の行に追加し続けます。その間、私たちは空の行を削除し続けます。

sed -ne '
   \|^https://|!d
   :loop
      N
      s/\n$//
   tloop
   s/\n/ /p
' file.txt

出力

https:// arkit.co.in/ Path Read (03/07/2017) Path: /website/upload/file.txt
https:// arkit.co.in/ Path Read (04/07/2017) Path: /website/upload/file1.txt

関連情報