标题: [文本处理] 批处理如何在txt文本里行尾为空格/制表符的行的末尾添加指定字符/字符串 [打印本页]
作者: idccom 时间: 2016-9-12 11:13 标题: 批处理如何在txt文本里行尾为空格/制表符的行的末尾添加指定字符/字符串
本帖最后由 pcl_test 于 2016-9-12 22:58 编辑
如下,怎么检测指定空白文本后面为空,检测空以后自动添加字符
原文本1.txt中的文本没有特例,所有root后面为空的,都要加成 root ""- 修改前1.txt
- 1.1.1.1 root pass
- 5.5.5.5 root
- 10.10.10.10 root
- 111.111.111.111 root q1
- 8.8.5.8 root
- 5.1.4.444 root
- 444.555.000.555 root
- 444.2.1.444 root 1
- 2.5.5. root
- 99.88.77.44 root 123
-
-
- 修改后为2.txt
- 1.1.1.1 root pass
- 5.5.5.5 root ""
- 10.10.10.10 root
- 111.111.111.111 root q1
- 8.8.5.8 root ""
- 5.1.4.444 root ""
- 444.555.000.555 root
- 444.2.1.444 root 1
- 2.5.5. root ""
- 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 编辑
以下代码仅针对你提供的示例(对于多个空格间隔的处理有缺陷):- (for /f "tokens=1,2,3* delims= " %%a in (1.txt) do (
- if "%%c"=="" (
- echo %%a %%b ""
- ) else (
- echo %%a %%b %%c
- )
- ))>>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
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('type "文本.txt"') do (
- set "str=%%a"
- set "str=!str: = !#"
- if "!str:~-2!" equ " #" (echo;%%a"") else echo;%%a
- )
- pause
复制代码
- @echo off&setlocal enabledelayedexpansion
- for /f "delims=" %%a in ('type "文本.txt"') do (
- set "str=%%a"
- set "str=!str: = !"
- for %%b in ("!str: =\!") do if "%%~nxb" equ "" (echo;%%a"") else echo;%%a
- )
- 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 编辑
骗个分- sed "s/root *$/& \"\"" inputFile
复制代码
- sed -r "s/^(\S+ +root) *$/\1 \"\"" inputFile
复制代码
作者: pcl_test 时间: 2016-9-12 19:51
回复 14# DiamondbacK
我也来- mshta http://bathome.net/s/hta "type('文本.txt').replace(/[ ]+(?=(\r?\n|$))/g,'$&\"\"')"&pause
复制代码
- powershell -c "gc '文本.txt'|%%{if($_ -match '\s$'){$_+'\"\"'}else{$_}}"&pause
复制代码
第三方- sed -r "s/[[:space:]]+$/&\"\"/" "文本.txt"&pause
复制代码
- gawk "{print /[[:space:]]+$/?$0\"\x22\x22\":$0}" "文本.txt"&pause
复制代码
作者: CrLf 时间: 2016-9-12 20:22
组团骗分- gawk "!$3{$3=\"\x22\x22\"}1" "文本.txt"&pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |