我正在进行一系列拆分以检查文件的每一行,并输出每行的格式化版本。
输入示例:
02/17-07:54:32.290169 [**] [1:1:0] other [**] [Priority: 0] {TCP} 100.100.100.212:6667 -> 192.168.5.81:2848
02/17-07:54:32.335595 [**] [1:1:0] other [**] [Priority: 0] {TCP} 100.100.100.212:6667 -> 192.168.5.81:2848
02/17-07:54:32.335628 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.5.81:2848 -> 100.100.100.212:6667
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
06/14-06:33:47.258621 [**] [1:1:0] other [**] [Priority: 0] {TCP} 192.168.4.85:4662 -> 69.192.30.179:80
当存在具有相同连接ID的字符串(在本例中为258621)时,我只需要第一次出现。
这会获取连接ID,但我不确定如何忽略可能跟随相同连接ID的任何行。
Get-Content $logFile -ReadCount 1 | % {
$_.Split()[0].Split(".")[1]
} | Out-File "C:\Log\logout.txt"
输出,我只想要第一次出现258621:
290169
335595
335628
258621
258621
258621
更棘手的部分是我还需要使用类似的东西重新格式化每一行(假设它不是重复的连接ID)(最终,我不希望输出中的连接ID):
'|' + (($_.Split()[9, 11, 4] -replace ':', '|') -join '|') + '|'
期望的输出:
|100.100.100.212|6667|192.168.5.81|2848|other|
|100.100.100.212|6667|192.168.5.81|2848|other|
|192.168.5.81|2848|100.100.100.212|6667|other|
|192.168.4.85|4662|69.192.30.179|80|other|
谢谢!
答案 0 :(得分:1)
您可以在$thisID
循环中使用Out-File
语句,以确保之前未处理此连接ID。
由于它已分配给变量$connectionIDs
,因此不会传递给Get-Content $logFile -ReadCount 1 | % {
$thisID = $_.Split()[0].Split(".")[1]
if($thisID -notin $connectionIDs){
'|' + (($_.Split()[9, 11, 4] -replace ':', '|') -join '|') + '|'
[array]$connectionIDs += $thisID
}
} | Out-File "C:\Log\logout.txt"
(for fil in /drop/*
do
test -f "/target/$fil"
if [ "$?" = 0 ]
then
suff=$(awk -F\. '{ print "."$NF }' <<<$fil)
bdot=$(basename -s $suff $fil)
mv "/drop/$fil" "/drop/${bdot}1$suff"
cp "/drop/${bdot}1.$suff" "/target/${bdot}1$suff"
fi
done
也一样)
var url = string.Format("http://bbs.eamobiledirectory.com/Mobile/MobileApi.aspx?Action=NewSalesReport&unm={0}&assignID={1}&report_details={2}&appoi_date={3}",
USERNAME,
ASSIGNID,
details,
date);
var response = await client.PostAsync(url, null);
var responseContent = await response.Content.ReadAsStringAsync();
输出符合您问题中的内容。