Applescript para comparar dos listas de dominios y eliminar duplicados

1

Intenté hacer esto con Automator y lo encontré ... faltando. He intentado buscar soluciones en cualquier otro lugar en el que pueda pensar, pero mis búsquedas siguen apuntándome a Applescript como la única respuesta disponible.

Necesito automatizar esta tarea diaria que consume mucho tiempo y no tengo idea de cómo hacerlo en Applescript, ya que solo empecé a "aprender" al respecto hace dos días.

Espero que alguien aquí pueda ayudarme.

Esto es lo que quiero hacer:

  1. Tengo una lista maestra de dominios.
  2. Compare la lista secundaria de dominios que creo todos los días y tengo las entradas duplicadas eliminadas (duplicados en comparación con la lista maestra).
  3. Luego, después de que haya tenido la oportunidad de copiar los dominios restantes (no duplicados), solicítelos que se agreguen a la lista maestra para mañana.

Parece bastante simple para mi mente no programada, pero parece que no puedo encontrar una manera fácil de hacer esto en cualquier lugar.

Si puede pensar en una forma fácil en la que no estoy pensando, hágamelo saber. O si tiene ese toque de talento con Applescript, por favor, dígame cómo hacerlo.

Gracias amablemente por adelantado.

Thomas

    
pregunta Thomas 25.02.2013 - 10:26

2 respuestas

1

Sería más fácil usar shell scripting:

grep -vxf master.txt today.txt > today2.txt; cat master.txt today2.txt > master2.txt

    
respondido por el user495470 25.02.2013 - 13:30
0

Si está más cómodo con Applescript, puede ejecutar el script de shell de @Lauri Ranta con el siguiente AppleScript:

do shell script "grep -vxf master.txt today.txt > today2.txt; cat master.txt today2.txt > master2.txt"

Si esto no está claro para ti, he hecho un AppleScript que incluye el script de shell de @Lauri Ranta.

Aquí se explica cómo construir una aplicación AppleScript que fusionará la lista de hoy a una lista maestra sin duplicados. . Rutas para dominar y amp; las listas de hoy se guardan entre lanzamientos o se preguntan si no se encuentran / definidas
. Después de fusionar, la lista de hoy se borra

1. Abre el editor de AppleScript

2. Pegue el siguiente código

-- Merge today list to a master list without duplicates
-- . Paths to master & today lists are saved between launchs or asked if not found/defined
-- . After merge, today list is cleared

-- Path to temporary items folder
property pathToTemp : POSIX path of (path to temporary items)

-- Paths to temporary files
property newAdds_temp : pathToTemp & "mergeLists_new_adds.tmp"
property mergedList_temp : pathToTemp & "mergeLists_merged_list.tmp"

-- Paths to lists
property masterFile : ""
property todayFile : ""


if (masterFile is "") or (not FileExists(masterFile)) then
    set todayFile to ""
    set masterFile to choose file with prompt "Select the master list :"
end if
if (masterFile is false) then
    set todayFile to ""
    set masterFile to ""
else
    if (todayFile is "") or (not FileExists(todayFile)) then
        set todayFile to choose file with prompt "Select the list to add :"
    end if
    if (todayFile is not false) then

        -- Prepare the shell script :       
        set masterFile_posix to POSIX path of masterFile
        set todayFile_posix to POSIX path of todayFile
        -- . Save new adds to newAdds_temp
        set shellScript to "grep -vxf " & masterFile_posix & " " & todayFile_posix & " > " & newAdds_temp & "; "
        -- . Merge master list & new adds to mergedList_temp (and remove newAdds_temp file)
        set shellScript to shellScript & "cat " & masterFile_posix & " " & newAdds_temp & " > " & mergedList_temp & "; unlink " & newAdds_temp & "; "
        -- . Replace master list by merged mergedList_temp
        set shellScript to shellScript & "mv -f " & mergedList_temp & " " & masterFile_posix & "; "
        -- . And clean today file
        set shellScript to shellScript & "echo \"\" > " & todayFile_posix

        -- Execute the generated shell script
        do shell script shellScript

        -- And display a message
        display dialog "Merge done."
    end if
end if

-- This function is inspired from Philip Regan answer on :
-- http://stackoverflow.com/questions/3469389/applescript-testing-for-file-existence
on FileExists(theFile)
    tell application "System Events" to return (exists theFile)
end FileExists

3. Exportar como una aplicación

Menú de archivo > Exportar > FileFormat: Aplicación

4. Copia de seguridad de sus listas!

5. Prueba la aplicación que acabas de crear

    
respondido por el Bibou 26.02.2013 - 12:23

Lea otras preguntas en las etiquetas