2

どのsedコマンドを使用すると、すべての行の終わりに1つの文字列を追加し、最初の行の先頭に別の文字列を追加し、5番目の行の終わりに別の文字列を追加できますか?

これまでのところ私は

    sed 's/$/<br>/' $FILE1 >> $FILE1_GETS_APPENDED_TO_THIS_FILE

file1の各行の最後にhtmlbreakステートメントを追加します。ただし、最初の5行の周りにヘッダーステートメントを追加する必要があります。したがって、最初の行の先頭を<h3>追加し、5行目の終わりを追加する必要があり</h3>ます。

ありがとう!

4

4 に答える 4

3

それはとても簡単です:

sed 's/$/<br>/; 1 s/^/<h3>/; 5 s/$/<\/h3>/'

$行の終わりを一致させるために使用するので、行^の開始を一致させるためにを使用します。

次に、コマンド(など)ごとに、s適用する行番号(または範囲)を指定できます。

于 2012-09-07T12:41:32.840 に答える
2

sedコマンドの前に番号を追加して、その行にのみ適用します。行番号の範囲を指定するには、コンマで区切って2つの数値を追加します。$最後の行を表します。詳細については、sedマニュアルの「アドレス」を参照してください。

sed -e '1 s/^/<h3>/' -e '5 s/$/<\/h3>/' -e '6,$ s/$/<br>/'
于 2012-09-07T12:41:28.637 に答える
1

私はこの種のもののためのawkが好きです:

awk 'NR==1{print "<h3>"};{print $0, "<br>"};NR==5{print "</h3>"}' file.htm
于 2012-09-07T12:45:10.323 に答える
0

sedマニュアルの「アドレス」をご覧ください。コマンドを適用する行番号を指定できます。

sed '5s/$/Appended after fifth line/'
于 2012-09-07T12:41:25.947 に答える