1

如果您有一个file.txt包含多行文本的文本文件,例如

asd asd
asdasd asdasd

如何选择要刮掉第 2 行asdasd asdasd?并稍后选择第 1 行等。

for /f %a in ('^" xidel --data=file.txt --extract=$raw ^"') do set "variable=%a"仅从第一行中提取第一个单词,它会跳过第一个空格之后的内容?

4

1 回答 1

1

首先,--data不需要指定:

xidel --help | FIND "--data"
--data=<string>                         Data/URL/File/Stdin(-) to process
                                        (--data= prefix can be omitted)

如何选择要刮掉第 2 行asdasd asdasd?并稍后选择第 1 行等。

你可以用x:lines($raw)它。它是一个简写形式,tokenize($raw,'\r\n?|\n')并且变成$raw了一个序列,其中每个新行都是另一个项目。然后只需选择第 1或第 2

xidel -s file.txt -e "x:lines($raw)[2]"
asdasd asdasd

for /f %a in ('^" xidel --data=file.txt --extract=$raw ^"') do set "variable=%a"仅从第一行中提取第一个单词,它会跳过第一个空格之后的内容?

这是因为如果你不设置分隔符,那么它默认为<space>and <tab>

FOR /? | FIND "delimiter"
        delims=xxx      - specifies a delimiter set.  This replaces the
                          default delimiter set of space and tab.

所以你可以这样做:

FOR /F "delims=" %A in ('xidel -s file.txt -e "x:lines($raw)[2]"') DO SET variable=%A

或使用以下命令导出变量xidel

FOR /F "delims=" %A in ('xidel -s file.txt -e "variable:=x:lines($raw)[2]" --output-format^=cmd') DO %A
于 2020-05-23T12:59:42.097 回答