Board logo

标题: [技术讨论] 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

我先来一个
  1. gc a.txt | %{$_ -replace ' [^ ]*$'}
复制代码
抛砖引玉
作者: CrLf    时间: 2013-7-31 06:37

本帖最后由 CrLf 于 2013-7-31 06:42 编辑

原来 ps 打不过的都是“魔教”...不明觉厉
先上一个 sed:
  1. sed "$d" a.txt
复制代码
如果尾行没有换行,批里面是一句话搞定:
  1. findstr $ a.txt
复制代码
尾行带换行就麻烦点:
  1. sort /+99 a.txt|more +1|sort /+99
复制代码
powershell 的我也抛个砖:
  1. ($a=get-content a.txt)[0..-($a.count-2)]
复制代码
但水平有限,上面这个办法因为两方面的原因无法兼容单行的 a.txt,所以改用 where-object:
  1. ($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 楼没区别:
  1. sed "s/\(.*\) .*/\1/" a.txt
复制代码
批的常规解法处理这个比较绕也没意思,来个另类解:
  1. @echo off
  2. for /f "delims=" %%a in (a.txt) do (
  3.    set "str= %%a"
  4.    setlocal enabledelayedexpansion
  5.    set "str=!str: = "!
  6.    set "str=!str: "= !"
  7.    echo;!str:~1!
  8.    endlocal
  9. )
  10. pause
复制代码
也写个 powershell:
  1. (type a.txt) -replace "[^ ]*$",""
复制代码
再来个用 split 的,没有 replace 方便:
  1. get-content a.txt | foreach-object{$b = $_.split();$b[$b.count-1]="";$b -join " "}
复制代码

作者: 523066680    时间: 2013-7-31 17:34

回复 8# CrLf


跟着绕……
  1. @echo off
  2. setlocal enabledelayedexpansion
  3. for /f "tokens=*" %%a in (a.txt) do (
  4.     set "ever="
  5.     set "Sleft="
  6.     for %%b in (%%a) do (
  7.         set "Sleft=!Sleft!!ever! "
  8.         set ever=%%b
  9.     )
  10.     echo !Sleft!
  11. )
  12. pause
复制代码





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