如何使用批处理从 TXT 文件复制特定的单词/数字?

如何使用批处理从 TXT 文件复制特定的单词/数字?

我需要在文本文件中搜索字符串后面的特定数字。例如,我有以下数据:

yyy = 80rr, xxx = 136rr, zzz = 95rr    

yyy我想要复制和rrxxx之间的数字rrzzz rr然后我想要回显这些数字。可以吗?

答案1

如果使用纯 Windows 工具,最好的选择可能是 Powershell。一行代码:在 PS 中:

$(sls '[0-9]+' filename.txt -allm).Matches.Value

从 CMD.EXE:

powershell -c "$(sls '[0-9]+' test.txt -allm).Matches.Value"

对于仅包含您的行的文本文件(名为filename.txt),这将打印以下内容:

80
136
95

我在多行文件和每行多个数字上测试了它,它仍然有效,将每个数字打印在自己的行上。现在,如果您文件中有任何其他您不想回显的数字,它们也会被回显。为了避免这种情况,我们可以只匹配以 结尾的数字rr

$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}

或者

powershell -c "$(sls '[0-9]+rr' test.txt -allm).Matches | foreach {$_.Value.trim('r')}"

答案2

在 Linux 中,您可以使用gawk命令。我这样做过:

    echo "yyy = 80rr, xxx = 136rr, zzz = 95rr" | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';

结果是:

    80 136 95

就你的情况而言:

    cat file.txt | gawk '{ match($0, /.*= ([0-9]+).*= ([0-9]+).*= ([0-9]+)/, array); printf "%d %d %d\n",array[1], array[2], array[3]}';

相关内容