删除文件中的行,除非它以特定字符串开头

时间:2017-11-09 09:51:23

标签: powershell

如果我只有-or语句的一面,那么它可以正常使用,因为输出文件只有一行显示true

如何让它显示以任一指定行开头的行?

(Get-Content "C:\Users\carst\Desktop\temp.xml") -match "<Module" -or (Get-Content "C:\Users\carst\Desktop\temp.xml") -match "<description>" | Out-File "C:\Users\carst\Desktop\temp2.xml"

2 个答案:

答案 0 :(得分:3)

由于它是一个XML文件,您需要检查节点之前是否有空格。

您可以加入2次搜索,并检查p4(...)开头是否有空格:

  l_task_source_id:= adapter.array_search('prps',g_status.ip_source_tables);
  l_check_stmt := ' select max(stufe::numeric) from '  || g_status.source_tables[l_task_source_id] ;
  execute     l_check_stmt   into l_max_hierarchy_level;  
  raise notice ' Max  hierarchy level : %',l_max_hierarchy_level;

答案 1 :(得分:2)

您可以使用竖线字符在一个匹配项中将它们全部加入:

(Get-Content "C:\Users\carst\Desktop\temp.xml") -match '<Module|<description>' | 
Out-File "C:\Users\carst\Desktop\temp2.xml