找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 74749|回复: 15

[文本处理] 批处理如何在txt文本里行尾为空格/制表符的行的末尾添加指定字符/字符串

[复制链接]
发表于 2016-9-12 11:13:32 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-9-12 22:58 编辑

如下,怎么检测指定空白文本后面为空,检测空以后自动添加字符
原文本1.txt中的文本没有特例,所有root后面为空的,都要加成 root ""
  1. 修改前1.txt
  2. 1.1.1.1 root pass
  3. 5.5.5.5 root
  4. 10.10.10.10 root
  5. 111.111.111.111 root q1
  6. 8.8.5.8 root
  7. 5.1.4.444 root
  8. 444.555.000.555 root
  9. 444.2.1.444 root 1
  10. 2.5.5. root
  11. 99.88.77.44 root 123


  12. 修改后为2.txt
  13. 1.1.1.1 root pass
  14. 5.5.5.5 root ""
  15. 10.10.10.10 root
  16. 111.111.111.111 root q1
  17. 8.8.5.8 root ""
  18. 5.1.4.444 root ""
  19. 444.555.000.555 root
  20. 444.2.1.444 root 1
  21. 2.5.5. root ""
  22. 99.88.77.44 root 123
复制代码

评分

参与人数 1PB -2 收起 理由
pcl_test -2 未按版规发帖

查看全部评分

发表于 2016-9-12 12:11:42 | 显示全部楼层
文本后面为空是个什么概念?
 楼主| 发表于 2016-9-12 12:15:35 | 显示全部楼层
回复 2# idos
修改了一下,你再帮我看看,谢谢
发表于 2016-9-12 12:18:24 | 显示全部楼层
以root结尾的加""
判断一下,
发表于 2016-9-12 12:25:38 | 显示全部楼层
本帖最后由 B魔方大人 于 2016-9-12 12:49 编辑

以下代码针对你提供的示例(对于多个空格间隔的处理有缺陷):
  1. (for /f "tokens=1,2,3* delims= " %%a in (1.txt) do (
  2.         if "%%c"=="" (
  3.                 echo %%a %%b ""
  4.         ) else (
  5.                 echo %%a %%b %%c
  6.         )
  7. ))>>0.txt
复制代码
sorry,问题没看清,代码错误。可以忽略。
发表于 2016-9-12 12:36:36 | 显示全部楼层
回复 4# wskwfkbdn


    再仔细看一下,有的root结尾不用添加字符串
发表于 2016-9-12 13:22:33 | 显示全部楼层
没理解要求
发表于 2016-9-12 13:26:59 | 显示全部楼层
10.10.10.10 root
444.555.000.555 root
为什么不需添加
发表于 2016-9-12 13:29:14 | 显示全部楼层
本帖最后由 codegay 于 2016-9-12 13:32 编辑

凡是类似的,你们都按看成是CSV文件格式来理解就好了。
本质是第三列内容为空,则添加字符。

其实也没必要这样处理,可能只是楼主思路比较傻
或者是读取处理这个帐号密码文件的程序比较傻。
发表于 2016-9-12 13:43:12 | 显示全部楼层
回复 6# idos


    请在顶楼说明 444.555.000.555 root 为什么是特例,不要让我们猜
 楼主| 发表于 2016-9-12 13:49:31 | 显示全部楼层
回复 10# CrLf


    没有特列,所有root后面为空的,都要加成 root ""     我已经重新编辑帖子了
发表于 2016-9-12 13:55:58 | 显示全部楼层
  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('type "文本.txt"') do (
  3.     set "str=%%a"
  4.     set "str=!str:        = !#"
  5.     if "!str:~-2!" equ " #" (echo;%%a"") else echo;%%a
  6. )
  7. pause
复制代码

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%a in ('type "文本.txt"') do (
  3.     set "str=%%a"
  4.     set "str=!str:        = !"
  5.     for %%b in ("!str: =\!") do if "%%~nxb" equ "" (echo;%%a"") else echo;%%a
  6. )
  7. pause
复制代码

评分

参与人数 1技术 +1 收起 理由
idccom + 1 厉害

查看全部评分

发表于 2016-9-12 14:45:00 | 显示全部楼层
回复 6# idos


    我是说root末尾的需要添加字符串,如果root非末尾的不处理

用第三方  repdos

repdos -d:"aa.txt" -ric:"root$" -t:"root 123"
发表于 2016-9-12 15:04:18 | 显示全部楼层
本帖最后由 DiamondbacK 于 2016-9-12 21:35 编辑

骗个分

  1. sed "s/root *$/& """ inputFile
复制代码

  1. sed -r "s/^(\S+ +root) *$/\1 """ inputFile
复制代码

评分

参与人数 1技术 +1 收起 理由
codegay + 1 我是雷锋

查看全部评分

发表于 2016-9-12 19:51:09 | 显示全部楼层
回复 14# DiamondbacK

我也来
  1. mshta http://bathome.net/s/hta "type('文本.txt').replace(/[          ]+(?=(\r?\n|$))/g,'$&""')"&pause
复制代码
  1. powershell -c "gc '文本.txt'|%%{if($_ -match '\s$'){$_+'""'}else{$_}}"&pause
复制代码
第三方
  1. sed -r "s/[[:space:]]+$/&""/" "文本.txt"&pause
复制代码
  1. gawk "{print /[[:space:]]+$/?$0"\x22\x22":$0}" "文本.txt"&pause
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-17 07:26 , Processed in 0.029386 second(s), 12 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表