Board logo

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

作者: idccom    时间: 2016-9-12 11:13     标题: 批处理如何在txt文本里行尾为空格/制表符的行的末尾添加指定字符/字符串

本帖最后由 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
复制代码

作者: idos    时间: 2016-9-12 12:11

文本后面为空是个什么概念?
作者: idccom    时间: 2016-9-12 12:15

回复 2# idos
修改了一下,你再帮我看看,谢谢
作者: wskwfkbdn    时间: 2016-9-12 12:18

以root结尾的加""
判断一下,
作者: B魔方大人    时间: 2016-9-12 12:25

本帖最后由 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,问题没看清,代码错误。可以忽略。
作者: idos    时间: 2016-9-12 12:36

回复 4# wskwfkbdn


    再仔细看一下,有的root结尾不用添加字符串
作者: 949825667@qq.co    时间: 2016-9-12 13:22

没理解要求
作者: pcl_test    时间: 2016-9-12 13:26

10.10.10.10 root
444.555.000.555 root
为什么不需添加
作者: codegay    时间: 2016-9-12 13:29

本帖最后由 codegay 于 2016-9-12 13:32 编辑

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

其实也没必要这样处理,可能只是楼主思路比较傻
或者是读取处理这个帐号密码文件的程序比较傻。
作者: CrLf    时间: 2016-9-12 13:43

回复 6# idos


    请在顶楼说明 444.555.000.555 root 为什么是特例,不要让我们猜
作者: idccom    时间: 2016-9-12 13:49

回复 10# CrLf


    没有特列,所有root后面为空的,都要加成 root ""     我已经重新编辑帖子了
作者: pcl_test    时间: 2016-9-12 13:55

  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
复制代码

作者: wskwfkbdn    时间: 2016-9-12 14:45

回复 6# idos


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

用第三方  repdos

repdos -d:"aa.txt" -ric:"root$" -t:"root 123"
作者: DiamondbacK    时间: 2016-9-12 15:04

本帖最后由 DiamondbacK 于 2016-9-12 21:35 编辑

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

作者: pcl_test    时间: 2016-9-12 19:51

回复 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
复制代码

作者: CrLf    时间: 2016-9-12 20:22

组团骗分
  1. gawk "!$3{$3=\"\x22\x22\"}1" "文本.txt"&pause
复制代码





欢迎光临 批处理之家 (http://bathome.net./) Powered by Discuz! 7.2