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

[文本处理] [已解决]批处理如何将txt文本每一行的内容倒序/反转输出?

[复制链接]
发表于 2012-11-15 02:46:21 | 显示全部楼层 |阅读模式
本帖最后由 pcl_test 于 2016-7-22 19:55 编辑

例如:原文本a内容:
批处理,是“我的最爱”

7878 2到底 23 。322版本


处理后输出文本b内容:
”爱最的我“是,理处批

本版223。 32 底到2 8787

行序不变,如果行与行之间有空行的话也不得删除,即保持原行序结构,只改变每行内容的前后顺序。
如何写代码?

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

 楼主| 发表于 2012-11-15 15:02:56 | 显示全部楼层
顶起来,高手
发表于 2012-11-15 22:28:36 | 显示全部楼层
本帖最后由 apang 于 2012-11-15 22:30 编辑
  1. @echo off
  2. (for /f "tokens=1,2 delims=[]" %%a in ('find /v /n ""^<a.txt') do (
  3.   set "str1=%%b$"
  4.   set "str2=%%b$"
  5.   setlocal enabledelayedexpansion
  6.   for %%b in (2048 1024 512 256 128 64 32 16) do (
  7.     if "!str1:~%%b!" neq "" (
  8.       set /a n+=%%b&set "str1=!str1:~%%b!"
  9.     )
  10.   )
  11.   set "str1=!str1!fedcba9876543210"
  12.   set /a n+=0x!str1:~16,1!
  13.   for /l %%b in (0 1 !n!) do set "str=!str2:~%%b,1!!str!"
  14.   echo,!str:~1!
  15.   endlocal
  16. ))>b.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
wh1234567 + 1 效果很好,再次感谢您的帮助,顺便说下,关 ...

查看全部评分

发表于 2012-11-15 22:46:26 | 显示全部楼层
本帖最后由 CrLf 于 2012-11-15 23:03 编辑

方法来自网上,我也没看明白,求解答:
  1. sed "/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//" 1.txt>2.txt
复制代码

评分

参与人数 1技术 +1 收起 理由
wh1234567 + 1 辛苦了,感谢您

查看全部评分

 楼主| 发表于 2012-11-15 23:13:44 | 显示全部楼层
回复 4# CrLf

很感谢你的相助,但是效果见截图,另外,处理输出后会出现错误现象
发表于 2012-11-23 15:11:46 | 显示全部楼层
回复 5# wh1234567


可能是你的sed版本问题,试试这个:
http://www.bathome.net/thread-16975-1-1.html

评分

参与人数 1技术 +1 收起 理由
wh1234567 + 1 嗯,是的,新版本的就不出现乱码

查看全部评分

发表于 2012-11-23 15:17:57 | 显示全部楼层
回复 4# CrLf


看执行过程:
[tmp]$ ./sedsed -d --hide=hold '/\n/!G;s/\(.\)\(.*\n\)/&\2\1/;//D;s/.//' urfile
PATT:a$
COMM:/\n/ !G
PATT:a\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:a\n\na$
COMM:// D
PATT:\na$
COMM:/\n/ !G
PATT:\na$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\na$
COMM:// D
PATT:\na$
COMM:s/.//
PATT:a$
a
PATT:b$
COMM:/\n/ !G
PATT:b\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:b\n\nb$
COMM:// D
PATT:\nb$
COMM:/\n/ !G
PATT:\nb$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nb$
COMM:// D
PATT:\nb$
COMM:s/.//
PATT:b$
b
PATT:c$
COMM:/\n/ !G
PATT:c\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:c\n\nc$
COMM:// D
PATT:\nc$
COMM:/\n/ !G
PATT:\nc$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nc$
COMM:// D
PATT:\nc$
COMM:s/.//
PATT:c$
c
PATT:d$
COMM:/\n/ !G
PATT:d\n$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:d\n\nd$
COMM:// D
PATT:\nd$
COMM:/\n/ !G
PATT:\nd$
COMM:s/\(.\)\(.*\n\)/&\2\1/
PATT:\nd$
COMM:// D
PATT:\nd$
COMM:s/.//
PATT:d$
d
发表于 2012-11-23 15:57:38 | 显示全部楼层
回复 7# Batcher


    昂!?这么牛逼的第三方是哪位?
发表于 2012-11-23 16:18:07 | 显示全部楼层
发表于 2016-7-22 20:01:06 | 显示全部楼层
本帖最后由 pcl_test 于 2016-7-22 20:02 编辑
  1. //&cls&type "文本.txt"|cscript -nologo -e:jscript "%~f0"&pause&exit
  2. var s='';while(!WSH.StdIn.AtEndOfStream){s+=WSH.StdIn.ReadLine().split('').reverse().join('')+'\r\n';}
  3. WSH.Echo(s);
复制代码
发表于 2016-12-17 18:47:19 | 显示全部楼层
本帖最后由 pcl_test 于 2016-12-17 19:00 编辑
  1. powershell -c "gc '文本.txt'|%%{$_[($_.length-1)..0] -join ''}"
复制代码
  1. powershell -c "gc '文本.txt'|%%{$a=$_.ToCharArray();[array]::Reverse($a);$a -join ''}"
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-20 02:28 , Processed in 0.020966 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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