Powershell ½ºÅ©¸³Æ® ¼öÁ¤ Á» µµ¿ÍÁÖ¼¼¿ä (ÅýºÆ® Áߺ¹ üũ)

dateno1   
   Á¶È¸ 1380   Ãßõ 0    

1901;팔리면 1656;문Ȣ16;1648; 맙시다. 소1473;한 NJ13;변 댓글1012; 삭1228;Ȣ16;lj16;,148; ǥ12;-124;러운 1068; 1077;니다 

Get-Content "./text.txt" | Group-Object | Where-Object { $_.Count -gt 1 } | Select -ExpandProperty Name


현1228; 내용1008; 1060;,144; 11460;1060; -149;1077;니다 (text.txt를 열Ǻ12;서 1473;복 라1064;1012; 체크후 표시해1469;니다)


굳1060; ps1 포맷1012; 안 Ǹ16;고, Python같1008;,152;/196; 처리해도 상관 없습니다 (아니면 달성 가능한 소프트를 소개해1452;셔도 .121;니다)


목표lj16; 2가1648;1077;니다 (.168;1473; Ȣ16;나 달성 가능Ȣ16;면 .121;니다)

1. 현1228; 구1312;면 싱글 스/112;드/196; 처리Ȣ16;다보니 수፾1;만 (현1228; 40만대1064;데 차후 더 늘Ǻ12;DŽ16; 수 1080;습니다) 라1064; 처리에 너무 오래 ,152;립니다


가능Ȣ16;다면 ǥ16;할해서 4~6스/112;드1221;도/196; 처리Ȣ16;고 dz10;습니다 (1204;체 라1064;1012; 카운터해서 필요한 스/112;드 숫1088;/196; 나눈후 시1089; 1648;1216;1012; 각각 그만큼 더해서 1648;122116;면 .112;꺼같습니다)


2. 1652;척도 표시0143; 1060;Ǻ12;서 처리 기능1012; 추가Ȣ16;고 dz10;습니다


현1228; 구1312;면 완료까1648; 아무,163;도 안 뜨고, 1~-149;까1648; 처리1064;데 현1228; 처리1473;1064; 라1064;1032; 수치를 표시 + 실행시 시1089;과 -149;1012; 1077;/14116;면 해NJ17; 구간1012; 처리Ȣ16;고, 안 Ȣ16;면 처1020;~-149;까1648; 처리Ȣ16;,172; Ȣ16;고1088; 합니다


만1068; 1060;,172; 가능해1648;면 여러개 실행해서 라1064;1012; 1648;1221;해서 실행Ȣ16;면 멀티 스/112;드/196; 처리가 가능Ȣ16;므/196; 1번1060; 필요 없Ǻ12;1665;니다


결국 2가1648;라 1201;었1648;만, Ƽ17;극1201;1004;/196;lj16; 멀티 스/112;드/196; 처리Ȣ16;lj16;,172; 목표라 보시면 .121;니다 (싱글 스/112;드/196; 41.5만 라1064; 택스트 처리Ȣ16;니 -140;찍한 시간1060; ,152;립니다)

맨날 삽질만 하고 삽니다

http://www.2cpu.co.kr/hardware_2014/44147
컴 케이스 작다고 불타거나 하지 않아요

ªÀº±Û Àϼö·Ï ½ÅÁßÇÏ°Ô.
ChatGPT 3.5 ·Î µ¹¸°°Çµ¥, ¾Æ¸¶ Á¤È®È÷ Çѹø¿¡ ³ª¿ÀÁø ¾Ê¾ÒÀ»°Í °°½À´Ï´Ù. Á»´õ ´ÙµëÀ¸½Ã¸é ¿øÇϽô ½ºÅ©¸³Æ®°¡ ³ª¿ÀÁö ¾ÊÀ»±î¿ä?

GPT ÁúÀÇ)
Get-Content "./text.txt" | Group-Object | Where-Object { $_.Count -gt 1 } | Select -ExpandProperty Name
1. Àüü ¶óÀÎÀ» ºÐÇÒÇؼ­ 4~6½º·¹µåÁ¤µµ·Î ó¸® (Àüü ¶óÀÎÀ» Ä«¿îÅÍÇؼ­ ÇÊ¿äÇÑ ½º·¹µå ¼ýÀÚ·Î ³ª´«ÈÄ ½ÃÀÛ ÁöÁ¡À» °¢°¢ ±×¸¸Å­ ´õÇؼ­ ÁöÁ¤)
2. Áøôµµ Ç¥½Ã ¹× ÀϽÃÁßÁö ¹×  °è¼ÓÁøÇàó¸® ±â´É Ãß°¡

GPT ´äº¯ )
: ¸ÕÀú, Àüü ¶óÀÎÀ» ºÐÇÒÇÏ¿© ¿©·¯ ½º·¹µå¿¡¼­ ó¸®ÇÒ ¼ö ÀÖµµ·Ï ÀÛ¾÷ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ À§Çؼ­´Â ÆÄÀÏÀÇ Àüü ¶óÀÎ ¼ö¸¦ ¼¼°í, ±× ¼ö¿¡ µû¶ó ÀûÀýÇÑ ¼öÀÇ ½º·¹µå·Î ºÐÇÒÇÕ´Ï´Ù. ±×·± ´ÙÀ½, °¢ ½º·¹µå°¡ ó¸®ÇØ¾ß ÇÒ ¶óÀÎ ¹üÀ§¸¦ °è»êÇÕ´Ï´Ù.

#-----------------------------------------
# ÆÄÀÏÀÇ Àüü ¶óÀÎ ¼ö °è»ê
$totalLines = Get-Content "./text.txt" | Measure-Object -Line | Select-Object -ExpandProperty Lines

# »ç¿ëÇÒ ½º·¹µå ¼ö ¼³Á¤ (¿©±â¼­´Â ¿¹½Ã·Î 4~6 »çÀÌÀÇ ½º·¹µå¸¦ »ç¿ë)
$threadCount = Get-Random -Minimum 4 -Maximum 7

# °¢ ½º·¹µå°¡ ó¸®ÇÒ ¶óÀÎ ¹üÀ§ °è»ê
$linesPerThread = [math]::Ceiling($totalLines / $threadCount)

# °¢ ½º·¹µåÀÇ ½ÃÀÛ ÁöÁ¡ °è»ê
$threadRanges = @()
$startLine = 1
for ($i = 1; $i -le $threadCount; $i++) {
    $endLine = [math]::Min($startLine + $linesPerThread - 1, $totalLines)
    $threadRanges += "$startLine-$endLine"
    $startLine = $endLine + 1
}
#-----------------------------------------

ÀÌÁ¦ $threadRanges ¹è¿­¿¡´Â °¢ ½º·¹µå°¡ ó¸®ÇØ¾ß ÇÒ ¶óÀÎÀÇ ¹üÀ§°¡ ÀúÀåµË´Ï´Ù.

: ´ÙÀ½À¸·Î, Áøôµµ Ç¥½Ã ¹× ÀϽÃÁßÁö/°è¼ÓÁøÇàó¸® ±â´ÉÀ» Ãß°¡ÇÒ ¼ö ÀÖ½À´Ï´Ù. À̸¦ À§Çؼ­´Â °¢ ½º·¹µå°¡ ¶óÀÎÀ» ó¸®ÇÒ ¶§¸¶´Ù ÁøÇà »óȲÀ» Ç¥½ÃÇÏ°í, ÇÊ¿äÇÑ °æ¿ì »ç¿ëÀÚ ÀÔ·ÂÀ» ¹Þ¾Æ ÀÛ¾÷À» ÀϽà ÁßÁöÇϰųª °è¼Ó ÁøÇàÇÕ´Ï´Ù.

#-----------------------------------------
# °¢ ½º·¹µå¿¡¼­ ÁøÇà »óȲÀ» Ç¥½ÃÇÏ°í »ç¿ëÀÚ ÀÔ·ÂÀ» ó¸®ÇÏ´Â ÇÔ¼ö Á¤ÀÇ
function ProcessLines {
    param (
        [string]$range
    )

    $startLine, $endLine = $range -split '-'

    for ($lineNumber = $startLine; $lineNumber -le $endLine; $lineNumber++) {
        # °¢ ¶óÀÎÀ» ó¸®ÇÏ´Â ÀÛ¾÷ ¼öÇà
        # ¿©±â¿¡ ½ÇÁ¦ ÀÛ¾÷ ³»¿ëÀ» Ãß°¡

        # ÁøÇà »óȲ Ç¥½Ã
        Write-Host "Processing line $lineNumber/$totalLines"

        # »ç¿ëÀÚ ÀÔ·Â È®ÀÎ (ÀϽà ÁßÁö ¶Ç´Â °è¼Ó ÁøÇà)
        $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown").Character
        if ($key -eq 'p') {
            # 'p' Å°¸¦ ´©¸£¸é ÀϽà ÁßÁö
            Write-Host "ÀÛ¾÷ÀÌ ÀϽà ÁßÁöµÇ¾ú½À´Ï´Ù. °è¼ÓÇÏ·Á¸é 'c'¸¦ ÀÔ·ÂÇϼ¼¿ä."
            do {
                $key = $Host.UI.RawUI.ReadKey("NoEcho,IncludeKeyDown").Character
            } while ($key -ne 'c')
            Write-Host "ÀÛ¾÷À» °è¼ÓÇÕ´Ï´Ù."
        }
    }
}

# °¢ ½º·¹µå¸¶´Ù ÀÛ¾÷ ½ÃÀÛ
foreach ($range in $threadRanges) {
    Start-ThreadJob -ScriptBlock {
        param (
            [string]$range
        )
        ProcessLines $range
    } -ArgumentList $range
}

# ¸ðµç ½º·¹µå ÀÛ¾÷ÀÌ ¿Ï·áµÉ ¶§±îÁö ´ë±â
Get-Job | Wait-Job

# ¸ðµç ÀÛ¾÷ ¿Ï·á ÈÄ ½º·¹µå Á¾·á
Get-Job | Remove-Job
#-----------------------------------------

À§ÀÇ ¿¹Á¦¿¡¼­´Â °¢ ½º·¹µå°¡ °¢ ¶óÀÎÀ» ó¸®ÇÏ´Â °¡»óÀÇ ÀÛ¾÷À» ¼öÇàÇÏ°í, ±× °úÁ¤¿¡¼­ ÁøÇà »óȲÀ» Ç¥½ÃÇÏ°í »ç¿ëÀÚ ÀÔ·ÂÀ» ¹Þ½À´Ï´Ù. ½ÇÁ¦ ÀÛ¾÷¿¡ ¸Â°Ô ½ºÅ©¸³Æ®¸¦ ¼öÁ¤ÇϽʽÿÀ.
     
dateno1 03-05
½ÃÇèÇغ¸´Ï job »ý¼º ½Ãµµ¸¦ ÇÏ°í, Àüü¸¦ ÀÔ·ÂÇÑ ½º·¹µå ¼ýÀÚ¸¸Å­À¸·Î ³ª´©¾î¼­ »êÃâÇϴ°ͱîÁø Á¤»óÀε¥, Á¤ÀÛ Ã³¸®ÇؾßÇÒ ºÎºÐ¿¡ ³»¿ë Ãß°¡ÇØÁ൵ ÇØ´ç ³»¿ë ½ÇÇàÀº ¾È Çϳ׿ä
¹ÎÈ£¾ç 03-05
Group-Object °¡ ´Ù ÀÐ°í ¹­±â¶§¹®¿¡ ¿À·¡°É¸³´Ï´Ù.
Where-Object { $_.Count -gt 1 } ´Â ¿ÀÈ÷·Á º° ½Ã°£ ¾È°É¸±°Ì´Ï´Ù.
°¢ ´Ü°è¸¦ ÂÉ°³ º¯¼ö¿¡ ³Ö°í ½ÇÇàÀ» ÇÏ¸é ¿À·¡°É¸®´Â º´¸ñÀÌ ¾îµðÀÎÁö º¸ÀÏ°Ì´Ï´Ù.
a = Get-Content "./text.txt"
b = a | Group-Object
...
system32 03-05
python3 ·Î § ¼Ò½ºÀÔ´Ï´Ù.import os
import threading

class LineProcessor:
    def __init__(self, filename):
        self.filename = filename
        self.lock = threading.Lock()
        self.total_lines = 0
        self.processed_lines = 0
        self.duplicates = {}

    def count_lines(self):
        with open(self.filename, 'r') as file:
            for line_number, line in enumerate(file, start=1):
                self.total_lines += 1

    def process_lines(self, start=None, end=None):
        with open(self.filename, 'r') as file:
            if start:
                file.seek(start)
            if end:
                chunk_size = end - start
            else:
                chunk_size = os.path.getsize(self.filename)

            for _ in range(chunk_size):
                line = file.readline()
                if not line:
                    break
                self.processed_lines += 1
                if line in self.duplicates:
                    with self.lock:
                        print(f"Duplicate line '{line.strip()}' found at line number(s): {', '.join(map(str, self.duplicates[line]))}")
                else:
                    self.duplicates.setdefault(line, []).append(self.processed_lines)

    def process_chunk(self, start, end):
        self.process_lines(start, end)
        with self.lock:
            print(f"Processed chunk from {start} to {end}. Progress: {self.processed_lines}/{self.total_lines}")

def find_duplicates(filename, num_threads=4):
    processor = LineProcessor(filename)
    processor.count_lines()
    chunk_size = processor.total_lines // num_threads

    threads = []
    for i in range(num_threads):
        start = i * chunk_size
        end = (i + 1) * chunk_size if i < num_threads - 1 else None
        thread = threading.Thread(target=processor.process_chunk, args=(start, end))
        threads.append(thread)
        thread.start()

    for thread in threads:
        thread.join()

    # print("Duplicate lines found:", processor.duplicates)

if __name__ == "__main__":
    filename = "text.txt"
    find_duplicates(filename)

³ª»ÚÁö ¾Ê°Ô °á°ú¸¦ ¹ñ¾îÁֳ׿ä.


QnA
Á¦¸ñPage 85/440
04-26   1522   Å©¸®¹Ì
04-26   1708   ÇÑÁßÀÏ
04-26   1436   Ȧ¸¯0o0
04-26   1253   ÀÌ´ëÈñ
04-26   1446   ¾Æ¸¶µ¥¿ì¾²
04-26   1506   ÀÌġŸī
04-26   1402   ¹¹µçÆȾƿä
04-25   1470   ÀüÀÏÀå
04-25   1186   »ßµ¹À̽½ÇÄÀÌ
04-25   1336   ¹Ì´ã
04-25   1823   Èĸ®Áö¾Æ
04-25   1074   ¹üÀÌ´Ô
04-25   1545   °ËÀºÄá
04-25   1209   lvlnx
04-25   1282   ¿µ»êȸ»ó
04-24   1809   Booraltak
04-24   1394   Á¤¹«Çö
04-24   1382   2CPUÃÖÁÖÈñ
04-24   1191   ¹Ì´ã
04-24   1229   ¾Æ¸¶µ¥¿ì¾²