如何忽略FOR循环中文本文件处理行上特定单词后的所有行?

时间:2015-09-03 05:29:48

标签: batch-file lines

我的问题是使用skip=3解决了关于行的列。这忽略了前3行。那么忽略下面例子中第一个end字之后的所有行呢。

1121.19, 1638.66, 16.6098, -4.7339, -4.7339, 2.5, hash:0, -1, -1, -1, -1, 1888, 0, 0
971.597, 1815.17, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0
971.597, 1825.45, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0
end
tcyc
end
mlop
end
lodm
end
slow
end
blok
end

所以我想忽略我的基本格式中没有的所有行:

971.597, 1825.45, 21.085, 1.39876E-006, 8, 4, hash:0, -1, -1, -1, -1, 1905, 0, 0

需要使用哪些代码来忽略从第一个end字到文件末尾的所有行,这些行将忽略示例输入中的以下行:

end
tcyc
end
mlop
end
lodm
end
slow
end
blok
end

这是我到目前为止的代码:

if exist 12.txt del 12.txt
FOR /F "skip=3 tokens=1-8* delims=," %%A IN (C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt) do >>12.txt echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E

1 个答案:

答案 0 :(得分:0)

第一个批处理文件检查 echo 行中使用的所有循环变量是否都有非空字符串,这导致忽略除前3行之外的所有行。

library(dplyr)

df1 %>% 
  mutate(X = sapply(strsplit(as.character(B), ' '), 
                    function(x) with(df2, max(X[Y %in% x])))) %>%
  left_join(., df2)

第二个批处理文件处理第一行的行,其中包含不区分大小写的字符串#Joining by: "X" # A B X Y #1 0.87 I have a beard 127 have #2 0.11 I slept for two hours -Inf <NA> #3 0.44 I have had two courses 127 have #4 0.45 this is not true 344 true

@echo off
setlocal EnableExtensions
set "OutputFile=12.txt"
del "%OutputFile%" 2>nul
for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do (
    if "%%A" NEQ "" (
        if "%%B" NEQ "" (
            if "%%C" NEQ "" (
                if "%%D" NEQ "" (
                    if "%%E" NEQ "" (
                        if "%%F" NEQ "" (
                            if "%%H" NEQ "" (
                                >>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E
                            )
                        )
                    )
                )
            )
        )
    )
)
endlocal

顺便说一下:如果用户帐户名为end,则@echo off setlocal EnableExtensions set "OutputFile=12.txt" del "%OutputFile%" 2>nul for /F "usebackq tokens=1-8* delims=," %%A in ("C:\Users\Sherlock\Documents\3DReaperDX\Frames\1.txt") do ( if /I "%%A" EQU "end" goto ContinueAfterLoop >>"%OutputFile%" echo model:%%H tx:%%A ty:%%C tz:%%B rx:%%D ry:%%F rz:%%E ) :ContinueAfterLoop endlocal %USERPROFILE%相同。