忘记密码   免费注册 查看新帖 |

ChinaUnix.net

  平台 论坛 博客 文库 频道自动化运维 虚拟化 储存备份 C/C++ PHP MySQL 嵌入式 Linux系统
最近访问板块 发新帖
查看: 1708 | 回复: 1

如何使用powershell取到文件的第二列 [复制链接]

论坛徽章:
5
程序设计版块每日发帖之星
日期:2016-04-15 06:20:00每日论坛发贴之星
日期:2016-04-15 06:20:0015-16赛季CBA联赛之八一
日期:2016-07-08 09:20:28操作系统版块每日发帖之星
日期:2016-08-03 06:20:002016科比退役纪念章
日期:2016-10-30 13:59:12
发表于 2018-07-11 16:53 |显示全部楼层
C:\Users\Administrator>ipptool http://10.10.10.10/ipp/printers get-completed-jobs.test
job-id job-state    job-name                                                                 job-originating-user-name job-media-sheets-completed
------ ---------     -------------------------------------------------                -------------------------       --------------------------
21     completed                                                                                            RedHat                                 1
20     completed                                                                                            RedHat                                 1
19     completed                                                                                            RedHat                                 1
18     completed cpgjob:{18S44d19a8e-8327-4ebe-9fa2-18681319ca8c}          ePrint                                   1
17     completed cpgjob:{18Sb3dd9f78-5ba5-447a-9fa2-18681319ca8c}           ePrint                                   1

在PowerShell脚本中使用如下命令,可以取到这个文本的第一列,如下所示:

ipptool http://10.10.64.133/ipp/printers get-completed-jobs.test|%{$_.split()[0]}

job-id
------
21
20
19
18
17


我现在想取这个文本的第二列,使用如下命令:

ipptool http://10.10.64.133/ipp/printers get-completed-jobs.test|%{$_.split()[1]}


job-state
---------


但是我是所获取第二列的所有值,即:

job-state
---------

completed
completed
completed
completed
completed


命令应该如何来写?

论坛徽章:
0
发表于 2018-07-11 22:31 |显示全部楼层

  1. $f = get-content 'a:\pscode\TEMP_2018\temp151\get-completed-jobs.test.txt'
  2. foreach ($行 in $f)
  3. {
  4.         ($行 -split "\s+")[1]  
  5. }
复制代码


========================
string.split() 方法不支持正则,区分大小写。更简单,更严谨。用的更多。
-split 参数支持正则。功能更强。
丰俭由人,这就很好。

split(' ') #单个空格
split("`t") #单个tab
========================
问:用powershell的话,如何实现【awk '{print $3}'】功能?
答:
($行 -split "\s+|\t+")[0]  #第1列
($行 -split "\s+|\t+")[2]  #第3列       

Get-Content /xxx/yyy.txt | foreach-object {$_.split()[2]}    #awk '{print $3}'


QQ群号=183173532
名称=powershell交流群

群内教学 powershell玩转vmware,docker,linux,win,excel等。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号 北京市公安局海淀分局网监中心备案编号:11010802020122
广播电视节目制作经营许可证(京) 字第1234号 中国互联网协会会员  联系我们:wangnan@it168.com
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP