我有一个包含多列的文本文件
Column1 Column2 Column3 AS_OF_DATE
1 2 3 07/12/2017
2 3 4 07/12/2017
.....
n行数 AS_OF_DATE表示文本文件中数据的日期。对于所有行都是相同的.AS_OF_DATE列的位置可以在任何位置。 现在我的要求是在AS_OF_DATE列下选择日期并将其存储在单独的文件中。
对此有所帮助。
由于 KVB
答案 0 :(得分:2)
此代码对您的数据做出了许多假设:
*
或?
个字符&
,|
等毒害字符<CR><LF>
,而不是<LF>
的结尾可能还有其他我不记得的限制
@echo off
setlocal
:: Define files
set "input=test.txt"
set "output=out.txt"
:: Read first (column header) line
<"%input%" set /p "ln="
:: Figure out which column contains AS_OF_DATE
for /f "delims=:" %%N in (
'cmd /c "(for %%C in (%ln%) do @echo %%C)|findstr /n AS_OF_DATE"'
) do set "col=%%N"
:: Write all AS_OF_DATE values to a new file
>"%output%" (
for /f "skip=1 usebackq eol= tokens=%col%" %%A in ("%input%") do echo %%A
)
更新: 以下是仅读取前2行的修改
@echo off
setlocal
:: Define files
set "input=test.txt"
set "output=out.txt"
:: Read the first two lines
<"%input%" (
set /p "header="
set /p "data="
)
:: Figure out which column contains AS_OF_DATE
for /f "delims=:" %%N in (
'cmd /c "(for %%C in (%header%) do @echo %%C)|findstr /n AS_OF_DATE"'
) do set "col=%%N"
:: Extract the AS_OF_DATE value and write to a new file
for /f "skip=1 eol= tokens=%col%" %%A in ("%data%") do >"%output%" echo %%A