I was trying to end up with something along the lines of:
(Get-Content -Path .\test.txt) -creplace "\b[^A-Z]+\b" " " | Set-Content -Path out.txt
Would have left spaces between the remaining terms to make output formatting easier ... wasn't getting the RegEx though.
That was the theory anyway

Now I think about it I could have split the input easily:
[regex]::Split
((Get-Content -Path .\test.txt
),'[\s,\.\(\)]') | %{ if($_ -cmatch('^[A-Z]+$')){Write-Host $_}}
Output is OK except for outputting SBA
and SBAC and duplicated entries.
@skwire: How did you stop SBA being passed through since SBAC is the stock code, (considering codes occur both inside and outside of surrounding brackets)?
You must be checking for duplicated entries also since there are multiple occurrences of JD and QQQ.
Was something to blow a few cobwebs out of my head anyway
Addendum:Duplicates removed courtesy of
http://www.secretgeek.net/ps_duplicates$hash = @{};
[regex]::Split
((Get-Content -Path .\test.txt
),'[\s,\.\(\)]') | %{if($_ -cmatch('^[A-Z]+$')){if($hash.
$_ -eq $null) { $_ };
$hash.
$_ = 1}} > .\output.txt
Output
FWONA
FB
OLED
AAPL
SBA
SBAC
ABMD
BAC
DNB
CHK
HAL
XOM
RIG
DAL
AAL
GM
F
QQQ
TVIX
VIX
ETN
CSCO
JD
MOMO
BRCD