test.txt內容如下:
ww 44 dd
22 gg jj
aa gg xx
xx tt
nn
kk
其中分隔符為制表符,表項空白處為空值,如果分隔符換為逗號,則如下
ww,44,dd
22,gg,jj
aa,gg,xx
xx,,tt
nn,,
,,kk
我想使用批處理提取第二列,第三列,包含空值,但結果如下:
取第二列:
for /f "tokens=2 delims=這里是制表符" %%v in (d:\test.txt) do echo %%v >> d:\3.txt
結果:
########################
44
gg
gg
tt --->此處第三列第四行的tt跑過來了
########################
但我理想結果:
########################
44
gg
gg
-->這里空值我就想讓他空著
########################
取第三列:
for /f "tokens=3 delims=這里是制表符" %%v in (d:\test.txt) do echo %%v >> d:\3.txt
結果:
########################
dd
jj
xx -->下面的tt被拿去第二列頂位空值了,這里沒了
########################
但我理想結果:
########################
dd
jj
xx
tt
-->這里空值我就想讓他空著
kk
########################
明顯在對空白值進行了忽略,甚至存在后續值頂位前面的空白值的現象
為何會出現這種偏差,我該怎么改呢,謝謝各位大蝦指教^_^
uj5u.com熱心網友回復:
xx,,tt改為
xx, ,tt
行嗎?
uj5u.com熱心網友回復:
感謝 schlafenhamster 回復此時就不是空值了,是有一個空格,所以結果肯定是可以的,同時原來空值的地方會被填上 “ECHO 處于關閉狀態。” 之類的字符
我將針對大量的并非我親自匯出的Txt資料和檔案進行操作,讓我將原空值處插入空格不太現實
得到的結果要再去處理掉 “ECHO 處于關閉狀態。”這樣的字符,太麻煩
還有什么好建議嗎?
uj5u.com熱心網友回復:
C:\>findstr /?在檔案中尋找字串。
FINDSTR [/B] [/E] [/L] [/R] [/S] [/I] [/X] [/V] [/N] [/M] [/O] [/F:file]
[/C:string] [/G:file] [/D:dir list] [/A:color attributes] [/OFF[LINE]]
strings [[drive:][path]filename[ ...]]
/B 在一行的開始配對模式。
/E 在一行的結尾配對模式。
/L 按字使用搜索字串。
/R 將搜索字串作為一般運算式使用。
/S 在當前目錄和所有子目錄中搜索匹配檔案。
/I 指定搜索不分大小寫。
/X 列印完全匹配的行。
/V 只列印不包含匹配的行。
/N 在匹配的每行前列印行數。
/M 如果檔案含有匹配項,只列印其檔案名。
/O 在每個匹配行前列印字符偏移量。
/P 忽略有不可列印字符的檔案。
/OFF[LINE] 不跳過帶有脫機屬性集的檔案。
/A:attr 指定有十六進位數字的顏色屬性。請見 "color /?"
/F:file 從指定檔案讀檔案串列 (/ 代表控制臺)。
/C:string 使用指定字串作為文字搜索字串。
/G:file 從指定的檔案獲得搜索字串。 (/ 代表控制臺)。
/D:dir 查找以分號為分隔符的目錄串列
strings 要查找的文字。
[drive:][path]filename
指定要查找的檔案。
除非引數有 /C 前綴,請使用空格隔開搜索字串。
例如: 'FINDSTR "hello there" x.y' 在檔案 x.y 中尋找 "hello" 或
"there"。'FINDSTR /C:"hello there" x.y' 檔案 x.y 尋找
"hello there"。
一般運算式的快速參考:
. 通配符: 任何字符
* 重復: 以前字符或類別出現零或零以上次數
^ 行位置: 行的開始
$ 行位置: 行的終點
[class] 字符類別: 任何在字符集中的字符
[^class] 補字符類別: 任何不在字符集中的字符
[x-y] 范圍: 在指定范圍內的任何字符
\x Escape: 元字符 x 的文字用法
\<xyz 字位置: 字的開始
xyz\> 字位置: 字的結束
有關 FINDSTR 常見表達法的詳細情況,請見聯機命令參考。
轉載請註明出處,本文鏈接:https://www.uj5u.com/gongcheng/81912.html
標籤:基礎類
