ディレクトリ内の複数のファイルに対しファイル内の文字列を置換するbashスクリプト

ディレクトリ内の複数のファイルに対し、ファイル内の特定の文字列を置換するbashスクリプトを作成しました。

別の記事で作成した、特定のファイルに対して置換した場合のbashスクリプトをベースにしています。
ファイルの中身を一行ずつ読んで文字列を置換するbashスクリプト
 
●仕様
 
・対象ディレクトリ
 /home/user/html/
 
・対象ファイル
 ○○県.html
 
・置換内容
 
下記のように<table>タグにid属性を追加する形で置換します。
(置換前)
<table border=1>・・・
 :
<table border=1>・・・
 :
<table border=1>・・・
 :
<table border=1>・・・
 :
(置換後)
<table id=”id1″ border=1>・・・
 :
<table id=”id2″ border=1>・・・
 :
<table id=”id3″ border=1>・・・
 :
<table id=”id4″ border=1>・・・
 :
●bashスクリプト

#!/bin/bash

tableid=(id1 id2 id3 id4)
dir=/home/user/html/
files="$dir*"
cd $dir
for filepath in $files; do
  if [ -f $filepath ] ; then
    if [[ $filepath =~ .*県.*html ]]; then
      fileout="$filepath"_tmp
      echo $fileout
      : > $fileout
      i=0
      while read line; do
        if [[ $line =~ "<table border=1>".* ]]; then
          tmp=${line#"<table border=1>"}
          tmp="<table id=\"${tableid[$i]}\" border=1>"$tmp
          echo $tmp >> $fileout
          let i++
        else
          echo $line >> $fileout
        fi
      done < $filepath
    fi
  fi
done
関連記事の目次

コメントを残す

メールアドレスが公開されることはありません。 * が付いている欄は必須項目です