ファイルの中身を一行ずつ読んで文字列を置換するbashスクリプト

ファイルの中身を一行ずつ読んで、ある特定の文字列を検索してマッチしたら別の文字列に置換するスクリプトを作成しました。

ここでは、ファイル内の<table border=1>の文字列を検索し、マッチしたら<table id=”test” border=1>に置換しています。
 

(1)スクリプトの説明


 
●ファイルを一行ずつ読み込み
 
while read line; do
  :
done < $filein   ●正規表現を使って文字列を検索
 
二重角括弧、”=~”を使う。
if [[ $line =~ “<table border=1>”.* ]]; then
 
●特殊文字のエスケープ
 
ダブルクォートで囲むか、1文字づつバックスラッシュ
tmp=${line#”<table border=1>”}
tmp=”<table id=\”test\” border=1>”$tmp
 
●ファイルの中身を空にする
 
前回実施済みの出力ファイルが残っていたら中身を空にする。
: > $fileout
 

(2)作成したbashスクリプト

#!/bin/bash

dir=/home/user/html/
filename=20140530千葉県.html
filein="$dir$filename"
fileout="$dir"tmp_"$filename"
: > $fileout
while read line; do
  if [[ $line =~ "<table border=1>".* ]]; then
    tmp=${line#"<table border=1>"}
    tmp="<table id=\"test\" border=1>"$tmp
    echo $tmp >> $fileout
  else
    echo $line >> $fileout
  fi
done < $filein
関連記事の目次

コメントを残す

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