それぞれ15-20のフォームフィールドを含むほぼ100のHTMLページを更新する必要があります。一括更新フォームのフィールド名とIDをbash、grep、sedで
セクション508に準拠するには、すべて一意に名前を付ける必要があります。
各フォームグループは、このような属性の同じ値の3があります
<label for="input-title" class="control-label">Title*</label>
<input class="form-control" id="input-title" name="input-title" value="SA Analyst" required>
お知らせ、名前とid属性がすべて同じであるため。 (以下の正規表現を参照)HTMLファイル内のすべてのフォームフィールドをループ - :
<label for="input-title21" class="control-label">Title*</label>
<input class="form-control" id="input-title21" name="input-title21" value="SA Analyst" required>
挑戦がにある
:
は、私はちょうどそれが最後にインクリメント数でこのような何かをする必要があります - それぞれの "form-group"を、 "for、name、id"という3つの属性値の末尾に追加されたインクリメント番号で更新する - 各フォームグループに同じ増分の数字が付いていることを確認する現在のループで同じ番号を取得します)
ここに私が働いて始まるbashのコードです:
#!/bin/bash
FILES=/Users/Administrator/files/*.html
counter=1
for f in $FILES
do
echo "Processing $f file..."
# take action on each file. $f store current file name
# cat $f
# sed 's/<input/<input2/g' $f > $f.txt
sed "s/<input/<input$counter/g" $f > $f.txt
echo $counter
((counter++))
done
echo All done
このコードが正常にカウンタ変数の数で入力を更新し、.txtファイルに保存しますが、それは中にすべての入力フィールドを更新しますので、これはまだ解決策ではありません同じインクリメント数のHTMLファイル。
(.*for\=")([0-9A-Za-z-]+)(".*\n\s*[0-9A-Za-z\<\>\-\=\"\s]*[id=|name=]")([0-9A-Za-z-]+)(".*[id=|name=]")([0-9A-Za-z-]+)("\s[type|req])
それでは、どのように私は上記のbashコードでこの正規表現を統合し、あらゆる形式の3つの属性を更新します:ここで
は私が思い付いた正規表現を変更する必要があるフォームグループを見つけています-グループ? mawkで
私は、XML/HTMLパーサ(xmlstarlet、xmllintを...)を使用することをお勧めします。 – Cyrus
この例はありますか?ありがとう –