2

フォルダに一連の.phpファイルがあり、これらの行の直前にテキストを追加したいと思います。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en" >

私が欲しいのは、htmlファイルのこれらの行の直前に挿入することです。したがって、各docType宣言の前にそのファイルを追加するだけです。ただし、以前はphp行がたくさんあるため、DOCTYPE宣言が1行目にあることはありません。

私はこの現在のスクリプトを持っています(ここで、FEは編集したいすべてのスクリプトを含むフォルダーです):

for file in ${fe}*; do
      echo "$file"
done

ありがとう、

4

6 に答える 6

6
for file in ${fe}*; do
sed -i -e '/<!DOC/i Text to insert' "$file"
done
于 2010-03-19T10:25:55.630 に答える
1
#!/bin/bash
shopt -s nullglob
text2add="my text to add"
for file in *.php
do
  if [ -f "$file" ];then
     sed -i.bak "/<\!DOCTYPE/ i $text2add" $file
  fi
done

または単に

text2add="my text to add"
sed -i.bak "/<\!DOCTYPE/ i $text2add" *.php

再帰的にやりたい場合

find . -iname "*.php" -exec  sed -i.bak "/<\!DOCTYPE/ i $text" "{}" +;
于 2010-03-19T10:27:43.583 に答える
0
for file in ${fe}*; do 
    mv $file temp
    echo "YOUR STRING" > $FILE
    cat temp >> $FILE;
done
于 2010-03-19T10:14:13.727 に答える
0
echo "line" | cat - yourfile > /tmp/out && mv /tmp/out yourfile

ここから取得:http ://www.cyberciti.biz/faq/bash-prepend-text-lines-to-file/

于 2010-03-19T10:16:21.030 に答える
0

これが私の提案です。挿入するテキストが。という名前のファイルにあることを前提としていますmytextfile

for file in ${fe}*; do
    awk '/!DOCTYPE/{printf"%s\n",text;}{print}' text="`cat mytextfile`" $file \
        > /tmp/out
    mv /tmp/out $file
done
于 2010-03-19T10:37:14.420 に答える
0

これをperlで試してください:

perl -i.bak -p -e 's/\<\!DOCTYPE/text to replace\<\!DOCTYPE/ig' *.php

このワンライナーは、すべてのphpファイルを変更し、<!DOCTYPE必要なものに置き換えます+ <!DOCTYPE-元に戻します(-:これにより、変更されたすべてのファイルが.bakの拡張子でバックアップされるため、「これを実行した後の.php.bak"ファイル。

iは大文字と小文字を区別せず、gはグローバルです。つまり、ファイル内のすべてを置き換えます。たった1つだと思いますが、同じケースなので、最後の「ig」は無事に省略できます。

于 2010-03-19T19:01:47.227 に答える