為什麼這篇UnxUtils鄉民發文收入到精華區:因為在UnxUtils這個討論話題中,有許多相關的文章在討論,這篇最有參考價值!作者tools241 (Mike)看板EZsoft標題[推薦]windows下安裝 UnxUtils...
軟體名稱:
UnxUtils
軟體資訊:
Windows
軟體功能:
仿 unix/linux 命令
軟體特色:
在windows的 "命令提示字元" 模式之下使用 "仿 unix/linux 命令"
下載連結:
http://sourceforge.net/projects/unxutils/
推薦原因:
在Win環境可充分利用到 "linux的字串處理能力" .
誰適合用:
1.常在Win環境設計 "批次檔" 而又熟悉linux者有更多命令可供選擇.
2.有大量文字檔想一次替換文字中的 "某些相似性的字串".
使用感想:
* 範例1:將 小說.txt 分割成3等份左右:
REM 將 小說.txt 分割成3等份左右, split3.bat 內容如下 :
REM 利用 仿unix命令 :
REM 1.計算行數用法 wc.exe --help
REM 2.改字串用法 sed.exe --help
REM 3.計算用法 expr.exe --help
REM 4.分割用法 split.exe --help
REM 計算 expr 行數 / 3 的值, 存到 tmp.txt
echo @echo off > tmp.bat
wc -l 小說.txt | sed -e "s: *\([0-9][0-9]*\).*:expr \1 / 3:" >> tmp.bat
call tmp.bat > tmp.txt
REM 些生 split.exe -行數 input.txt output_
sed -e "s:\(.*\):split.exe -\1 小說.txt output_:" < tmp.txt > tmp.bat
call tmp.bat
move output_aa 小說_1.txt
move output_ab 小說_2.txt
move output_ac 小說_3.txt
del tmp.txt
del tmp.bat
* 註解:
sed.exe -e "編輯指令" < 輸入檔 > 輸出檔
編輯指令中有 "s/找字串一/改成字串二/" 或 "s:找字串一:改成字串二:" ,
其中 s 表示 "替代"
找字串一 http.*\/\([0-9][0-9]*\)\.[jJ][pP][gG] , 其中
. 表示 "任意字", * 表示 "前面的字出現任意次數", 因此
.* 表示 "任意字出現任意次數"
\ 表示 將其後的字的意義 "取消 或 另做不同的解釋" , \/ 表示 / ,
\([0-9][0-9]*\) 表示將 \( \) 的內容存到字串二的 \1 中 ,
[0-9] 表示一個字為範圍介於0-9之間的數字,
[0-9]* 表示數字重複出現任意次(含零次) ,
\. 表示一個字 .
[jJ] 表示一個字內容為 j 或 J
* 範例2:假設有一個檔案 c:\input.txt 內容如下:
<a href=http://aaa.xxx.com/mdf/1.jpg>

<a href="http://www.abcdef.com/d3nj6-R/903.JPg">
要將存放的網址全部替換, 最後產生 c:\output.txt 內容如下:
<a href="http://www.ppp.com.tw/1.JPG">
<a href="http://www.ppp.com.tw/52.JPG">
<a href="http://www.ppp.com.tw/903.JPG">
則利用以下命令便可編輯出所要的結果:
sed.exe -e "s/http.*\/\([0-9][0-9]*\)\.[jJ][pP][gG]/http:\/\/www.ppp.com.tw\/\1.JPG/" < c:\input.txt > c:\output.txt
執行完便產生 c:\output.txt 內容為:
<a href=http://www.ppp.com.tw/1.JPG>
<a href="http://www.ppp.com.tw/903.JPG">
* 註解:
sed.exe -e "編輯指令" < 輸入檔 > 輸出檔
編輯指令中有 "s/找字串一/改成字串二/" 或 "s:找字串一:改成字串二:" ,
其中 s 表示 "替代"
找字串一 http.*\/\([0-9][0-9]*\)\.[jJ][pP][gG] , 其中
. 表示 "任意字", * 表示 "前面的字出現任意次數", 因此
.* 表示 "任意字出現任意次數"
\ 表示 將其後的字的意義 "取消 或 另做不同的解釋" , \/ 表示 / ,
\([0-9][0-9]*\) 表示將 \( \) 的內容存到字串二的 \1 中 ,
[0-9] 表示一個字為範圍介於0-9之間的數字,
[0-9]* 表示數字重複出現任意次(含零次) ,
\. 表示一個字 .
[jJ] 表示一個字內容為 j 或 J
--
※ 發信站: 批踢踢實業坊(ptt.cc)
◆ From: 36.231.73.222