[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[技术讨论] 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
1

评分人数

Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

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,非三言两句能说清楚地,等我有空写点吧。估计要很久以后才有空。
脚本是写给人看的,是写给用户看的,而不是写给机子看的
用户能看懂、会修改的脚本,才是好脚本。
写易懂的powershell脚本帮人解决问题,进而让用户学会自渔,吾所愿也

TOP

回复 2# PowerShell


2、我是要和PowerShell爱好者们切磋技术,又不是针对你一个人。
3、我就是想看看PowerShell到底是有多“无敌”
4、你的意思是说PowerShell只要在某一个方面比别的脚本有优势它就能够叫做“无敌”?
5、我发帖不违反论坛规定,长老们哪儿凉快哪儿歇着去吧。
6、Linux里面的shell/perl/python我都略懂一点,就是很好奇PowerShell到底是有多“无敌”。
7、别瞎写那些长篇大论了,忽悠不了任何人。你折腾了这么些日子了,有几个人相信了你的“无敌”理论?还是那句话:Talk is cheap. Show me the code.
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

菜鸟 围观  学习

TOP

我先来一个
  1. gc a.txt | %{$_ -replace ' [^ ]*$'}
复制代码
抛砖引玉
1

评分人数

TOP

本帖最后由 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...当然不是在这里

TOP

回复 6# CrLf


    是删除最后一列,不是最后一行。
Talk is cheap. Show me the code.
没事不要瞎扯淡,有能耐就把代码贴出来给我看。

TOP

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

评分人数

TOP

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

TOP

返回列表