rssフィードに特殊文字が含まれてるとフィードエラーで読み込めない場合があるから置換する
対象となる特殊文字はこれら5つ。
&
<
>
‘
“
置換後はそれぞれこれに。
&
<
>
'
"
sedの置換方法:
$ sed ‘s/置換前文字/置換後文字/g’ 対象ファイル名
拡張子を.sedのファイル作って中に複数の条件入れて一括置換:
s/置換前1/置換後1/g
s/置換前2/置換後2/g
s/置換前3/置換後3/g
実行:
$ sed -f 置換.sed 対象ファイル名
対象ファイル内を置換して置換後の内容で上書き保存するのは -iオプション
$ sed -i sed -f 置換.sed 対象ファイル名
こんなふうに続けて書きたいところだけど、これだとエラーする
$ sed -i -f 置換.sed 対象ファイル名
$ sed -if 置換.sed 対象ファイル名
空白行削除(行全体指定してをdコマンドで削除):
/^$/d
参照: kabipan.com
置換に使う改行の指定は
置換前\n
置換後\のあとに実際の改行
正規表現の例:
$ sed -e “s/oldtext/newtext/g” #文字列の変換
$ sed -e “s/text//” #文字列の削除
$ sed -e “s/^text//” #行頭にtextがあった場合削除
$ sed -e “s/text\$//” #行末にtextがあった場合削除
$ sed -e “s/abc/abcxyz/g” #abcの後に文字列を追加
$ sed -e “s/^/text/” #行頭に文字列を追加
$ sed -e “s/\$text/” #行末に文字列を追加
$ sed -e “s/.*/abc/” #.*は全ての文字列を表す
$ sed -e ‘s/<tab>/<space>/g’ #タブをスペースに変換
$ sed -e ‘s/<space><space>*/<space>/g’ #複数のスペースを1つのスペースに変換
# ホワイトスペースを1つのスペースに変換
$ sed -e ‘s/[<space><tab>][<space><tab>]*/<space>/g’
$ sed -e ‘s/^[<space><tab>]*//’ #行頭のホワイトスペースを削除
$ sed -e ‘s/[<space><tab>]*$//’ #行末のホワイトスペースを削除
$ sed -e “/text/d” #textを含んだ行を削除
$ sed -e ‘/^$/d’ #空白行を削除
$ sed -e “5,20s/oldtext/newtext/g” #5行目から20行目を変換
$ sed -e ‘1d’ #1行目を削除
$ sed -n ‘1p’ #1行目を表示
引用元: sed – あんみのの備忘録
正規表現参照:
itpro
コメント