0

I have a file called notification.txt that has data in it that I need to trim and pass the trimmed output to another command.

File is a random number of lines, could be 1, could be 100+, they look like this:

hostname.domain.xyz                      Notification
hostname.domain.xyz                      Notification
hostname.domain.xyz                      Notification
hostname.domain.xyz                      Notification

I'm looking to trim everything from the first . to the right and it will just leave me with the hostname in a array/variable that I can then use to pass to another command.

1 Answer 1

4

You can remove everything after the first occurrence of . by calling Split and discarding everything except for the first part:

$strings = @(
  'host1.domain.tld       Notification'
  'host2.domain.tld       Notification'
  'host3.domain.tld       Notification'
  'host4.domain.tld       Notification'
  'host5.domain.tld       Notification'
)

$hostnames = $strings |ForEach-Object { $_.Split('.')[0] }

$_.Split('.') returns a string array (eg. @('host1','domain','tld Notification')), and [0] gives us the first element in said array


Alternatively, use the -replace regex operator:

$hostnames = $strings -replace '\..*$'

The regex pattern \..*$ will match the first literal dot . and everything after it until the end of the string, and since we're using the -replace operator with no substitute string as the second argument, that entire part gets removed.

Sign up to request clarification or add additional context in comments.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.