2012-05-10 22 views
0

我有成千上萬個HTML文件,每個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 
+0

有很多方法可以做到這一點。你對什麼技術感到滿意 - 所以我們可以提出可行的解決方案? –

回答

0

這裏是使用grep的溶液中在Unix一個bash殼與文件003.html:

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循環迭代內的每個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 
+0

可以在Windows上完成,因爲我沒有unix/linux/cygwin?謝謝! – user1385159