标题: [技术讨论] PK PowerShell:删除文本文件的最后一列 [打印本页]
作者: gawk 时间: 2013-7-30 14:18 标题: PK PowerShell:删除文本文件的最后一列
请不要移动我的帖子!
我是要和PowerShell爱好者们切磋技术。如果你们讨厌PowerShell或者和版主之间有私人矛盾,请单独找地方解决,不要在我的帖子里面瞎捣乱!
C:\type a.txt
Talk is cheap.
Show me the code.
Talk is cheap.
Show me the code.
C:\gawk "NF--" a.txt
Talk is
Show me the
Talk is
Show me the
作者: PowerShell 时间: 2013-7-30 21:57
1 帖子不是我移动的,貌似我没权利呢.谁搞的应该出来说一声,不过移不咦我无所谓。
2 我不叫powershell,我叫powershell传教士。老人一般会知道这个,名字太长搞不下了。其实名字不长,是编写论坛的程序员垃圾。
3 这些是简单的东西,pk搞点有难度的吧,另外,天热蚊子多,让我先休息几天吧,先别pk了。
4 我再说一遍,powershell依赖于。net, 。net很强 ,有图形界面功能(当然其实vbs脚本也都有图形功能了);有打印功能;有联网功能;如 网上搜powershell的tcp端口测试;有xml功能;有声音功能;有当服务器端web脚本功能(其实vbs也有这个功能);调用excel有天生优势;大大的有服务器管理功能,如计划任务,有管理dns服务器相关库和命令。你能拿出什么pk这些功能呢?我想不出。
5 光用linux邪教技术pk我正教(呵呵,我就这么一说)技术,难道你不怕本坛诸正教长老对你的怒火么?
6 光知道查找替换,文本处理,的linux魔教技术,何敢拿出来吹捧呢?魔教bash+sed+awk+grep技术是不行滴。魔教脚本技术不容易学,又很麻烦,所以很多人在linux下,都求人编写脚本。劝你别学,学也要学面向对象的魔教技术python,这个和powershell才有一拼,
但
win天生图形,很多日志处理,有图形软件。如iis日志处理程序。文本处理也有search & replace ,ultraedit,等等支持正则的图形软件。所以说win下不是那么需要用脚本语言来处理文本。powershell的空间很广阔,包括但不限于4条的叙述。别拿煤球炉子pk多功能电饭炒炖蒸煮炸锅了,拜托。
7说到py和ps之pk,非三言两句能说清楚地,等我有空写点吧。估计要很久以后才有空。
作者: gawk 时间: 2013-7-30 22:55
回复 2# PowerShell
2、我是要和PowerShell爱好者们切磋技术,又不是针对你一个人。
3、我就是想看看PowerShell到底是有多“无敌”
4、你的意思是说PowerShell只要在某一个方面比别的脚本有优势它就能够叫做“无敌”?
5、我发帖不违反论坛规定,长老们哪儿凉快哪儿歇着去吧。
6、Linux里面的shell/perl/python我都略懂一点,就是很好奇PowerShell到底是有多“无敌”。
7、别瞎写那些长篇大论了,忽悠不了任何人。你折腾了这么些日子了,有几个人相信了你的“无敌”理论?还是那句话:Talk is cheap. Show me the code.
作者: shenghuo 时间: 2013-7-30 22:59
菜鸟 围观 学习
作者: DAIC 时间: 2013-7-30 23:28
我先来一个- gc a.txt | %{$_ -replace ' [^ ]*$'}
复制代码
抛砖引玉
作者: CrLf 时间: 2013-7-31 06:37
本帖最后由 CrLf 于 2013-7-31 06:42 编辑
原来 ps 打不过的都是“魔教”...不明觉厉
先上一个 sed:复制代码
如果尾行没有换行,批里面是一句话搞定:复制代码
尾行带换行就麻烦点:- sort /+99 a.txt|more +1|sort /+99
复制代码
powershell 的我也抛个砖:- ($a=get-content a.txt)[0..-($a.count-2)]
复制代码
但水平有限,上面这个办法因为两方面的原因无法兼容单行的 a.txt,所以改用 where-object:- ($a = get-content a.txt)|where-object{$_.readcount -lt ($a.count+0)}
复制代码
另,关于高压锅的故事我很想聊聊 ahk...当然不是在这里
作者: gawk 时间: 2013-7-31 10:44
回复 6# CrLf
是删除最后一列,不是最后一行。
作者: CrLf 时间: 2013-7-31 17:12
本帖最后由 CrLf 于 2013-7-31 17:33 编辑
回复 7# gawk
莽撞了,题目都没看清...
sed 和 5 楼没区别:- sed "s/\(.*\) .*/\1/" a.txt
复制代码
批的常规解法处理这个比较绕也没意思,来个另类解:- @echo off
- for /f "delims=" %%a in (a.txt) do (
- set "str= %%a"
- setlocal enabledelayedexpansion
- set "str=!str: = "!
- set "str=!str: "= !"
- echo;!str:~1!
- endlocal
- )
- pause
复制代码
也写个 powershell:- (type a.txt) -replace "[^ ]*$",""
复制代码
再来个用 split 的,没有 replace 方便:- get-content a.txt | foreach-object{$b = $_.split();$b[$b.count-1]="";$b -join " "}
复制代码
作者: 523066680 时间: 2013-7-31 17:34
回复 8# CrLf
跟着绕……- @echo off
- setlocal enabledelayedexpansion
- for /f "tokens=*" %%a in (a.txt) do (
- set "ever="
- set "Sleft="
- for %%b in (%%a) do (
- set "Sleft=!Sleft!!ever! "
- set ever=%%b
- )
- echo !Sleft!
- )
- pause
复制代码
欢迎光临 批处理之家 (http://www.bathome.net/) |
Powered by Discuz! 7.2 |