0

何千もの HTML ファイルがあり、それぞれが同じ文字で始まり、異なる文字列で終わる文字列を持っています。各ファイルのその文字列を一番上の行に移動する自動化された方法が必要です。問題のレイアウトは次のとおりです。

001.html source:
lksjds
65:99430
lksdmls

002.html source:
kjsndsk
65:09i

003.html source:
knknknkn
sderokfeokfr
65:3498u
lksdmlsre

今、私はそれらを次のようにしたいと思っています [正規表現で 65:* を見つけて、それを一番上に移動します]:

001.html source:
65:99430
lksjds
lksdmls

002.html source:
65:09i
kjsndsk

003.html source:
65:3498u
knknknkn
sderokfeokfr
lksdmlsre
4

1 に答える 1

0

grepファイル 003.html を使用して Unix の bash シェルで使用するソリューションを次に示します。

   FILE="003.html"
   PATTERN="^65:.*"
   TEMP_FILE="${RANDOM}"

   grep --color=never "${PATTERN}" "${FILE}" > "${TEMP_FILE}"
   grep -v "${PATTERN}" "${FILE}" >> "$TEMP_FILE"
   mv "${TEMP_FILE}" "${FILE}"

これはfor、次のように、1 行で各 Html ファイルを反復するループ内に配置できます。

   for FILE in $(ls *.html); do PATTERN="^65:.*"; TEMP_FILE="${RANDOM}"; grep --color=never "${PATTERN}" "${FILE}" > "${TEMP_FILE}" ; grep -v "${PATTERN}" "${FILE}" >> "$TEMP_FILE"; mv "${TEMP_FILE}" "${FILE}"; done
于 2012-05-10T09:10:36.570 に答える