以下の文字が来ました。
<div><p class="title">software
v1.0.1.0
download</p></div>
<div><p class="title">software
v1.0.2.0
download</p></div>
<div><p class="title">software
v1.0.3.0
download</p></div>
rangeで改行文字を置き換える必要があります<p class="title">...</p>
。以下のようにしてください。
<div><p class="title">software v1.0.1.0 download</p></div>
<div><p class="title">software v1.0.2.0 download</p></div>
<div><p class="title">software v1.0.3.0 download</p></div>
sedを使用してこれを実行できますか?助けてくれてありがとう!
答え1
ファイルにこれら3つの「重複」行のみが含まれている場合は、次のものを使用できます。
$ sed 'N;N;s/\n/ /g' file
これで以下が生成されます。
<div><p class="title">software v1.0.1.0 download</p></div>
<div><p class="title">software v1.0.2.0 download</p></div>
<div><p class="title">software v1.0.3.0 download</p></div>
sed
ファイルに追加の行が含まれている場合は、次のスクリプトを使用してください。
$ sed '/class="title"/ { N;N;s/\n/ /g }' file
答え2
GNU
以下が使えるからsed
sed -n '/class="title"/{N;s/\n/ /;N;s/\n/ /p;}' file.txt
N
パターン空間に次の行を追加する
答え3
ここでは必要ありませんsed
。あなたはこれを行うことができますpaste
:
paste -d ' ' - - - < file
または:
paste -sd ' \n' file
改行文字を次の<p class="title">
空白文字に置き換えるには、次のようにします</p>
。
perl -0777 -pe 's{<p class="title">.*?</p>}{$& =~ y/\n/ /r}gse' < file
答え4
<div>
あなたの質問は、aが閉じている場合にのみ行を折り、改行を印刷する方法で説明できます。もちろん、これはHTMLではなく単純なHTMLビットで動作します。ここでawkを使用すると:
awk '{ORS = (/\/div>$/? "\n": " ")} 1' file
/div>
行末に一致するものがある場合は、出力レコード区切り記号(ORS)を改行文字に設定し、それ以外の場合はORSを空白に設定します。すべての行を1
意味します{print}
。
<div><p class="title">software v1.0.1.0 download</p></div>
<div><p class="title">software v1.0.2.0 download</p></div>
<div><p class="title">software v1.0.3.0 download</p></div>