Comparar 2 cols; Cuando 1er COL> 2nd col, elimine el segundo col -- bash campo con text-processing campo con sed campo con awk campo con csv camp askubuntu Relacionados El problema

Compare 2 cols; when 1st col > 2nd col, remove 2nd col


0
vote

problema

Español

¿Cómo puedo comparar 2 cols en el archivo CSV, dividido por /network/interface1 , y los cols contienen cotizaciones /network/interface2 cuando /network/interface3 está presente en col , y cuando 2nd col & gt; 1er col, luego retire el segundo (último) col.

Hice algo similar, comparar 2 cols y cuando sean iguales, elimine el segundo (último) col.

  /network/interface4  

archivo /network/interface5 .

  /network/interface6  

Salida deseada, trabajando con 2 Últimos cols divididos por /network/interface7 (justo en la última línea es 2do valor y gt; 1er valor, abcdefhijklmnabcdefghijklmn18 , así que déjalo, elimina el último col).

  /network/interface9  

es posible no hacerlo solo para el Último COL, sino para collar en algún lugar de la línea (eliminar)?

y cómo puedo hacerlo, si la cita en CSV no es ABCDEFGHIJKLMNABCDEFGHIJKLMN20 , pero ABCDEFGHIJKLMNABCDEFGHIJKLMN21 , por ejemplo?

Original en ingles

How can I compare 2 cols in csv file, divided by ,, and cols contains quotes " when , is present in generated col, and when 2nd col > 1st col, then remove 2nd (last) col.

I did something similar, compare 2 cols and when are equal, remove 2nd (last) col.

awk ' BEGIN{FS=OFS=","} $NF==$(NF-1){$NF=""}1 ' input_file.csv | sed 's/,$//' 

File input_file.csv.

5,464205,Obal na zahradnxc3xad topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559,559 5,464207,Obal na zahradnxc3xad topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559,559 2,464548,Elektrickxc3xbd provzduxc5xa1xc5x88ovaxc4x8d combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790,2790 8,465435,Plechovxc3xbd talxc3xadxc5x99 - Autumn,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69,39 8,466378,Proutxc4x9bnxc3xbd vxc4x9bnec 30 cm - xc5xa1edxc3xa1,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159 

Desired output, working with 2 last cols divided by , (just in last line is 2nd value > 1st value, 149 < 159, so leave it, else remove last col).

5,464205,Obal na zahradnxc3xad topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559 5,464207,Obal na zahradnxc3xad topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559 2,464548,Elektrickxc3xbd provzduxc5xa1xc5x88ovaxc4x8d combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790 8,465435,Plechovxc3xbd talxc3xadxc5x99 - Autumn,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69 8,466378,Proutxc4x9bnxc3xbd vxc4x9bnec 30 cm - xc5xa1edxc3xa1,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159 

Is possible to do it not for last col only, but for col inside somewhere in line (remove)?

And how can I do it, if quote in csv is not ", but | for example?

              
   
   

Lista de respuestas

1
 
vote

usando Miller ( https://github.com/johnkerl/miller ), a partir de < / p>

  5,464205,Obal na zahradní topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559,559 5,464207,Obal na zahradní topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559,559 2,464548,Elektrický provzdušňovač combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790,2790 8,465435,"Plechový, talíř - Autumn",https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69,39 8,466378,Proutěný věnec 30 cm - šedá,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159   

y corriendo

  mlr --csv --implicit-csv-header --headerless-csv-output  put 'if ($6 >= $7) {unset $7 }' input.csv | sed -r '/^s*$/d' >output.txt   

tendrás

  5,464205,Obal na zahradní topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559 5,464207,Obal na zahradní topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559 2,464548,Elektrický provzdušňovač combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790 8,465435,"Plechový, talíř - Autumn",https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69 8,466378,Proutěný věnec 30 cm - šedá,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159   

Si su separador de campo es | El comando será

  mlr --csv --fs "|" --implicit-csv-header --headerless-csv-output  put 'if ($6 >= $7) {unset $7 }' input.csv | sed -r '/^s*$/d' >output.txt   

Si desea comparar las columnas 6 y 7, puede modificar el comando con el número de columna que desea comparar.

 

Using Miller (https://github.com/johnkerl/miller), starting from

5,464205,Obal na zahradnxc3xad topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559,559 5,464207,Obal na zahradnxc3xad topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559,559 2,464548,Elektrickxc3xbd provzduxc5xa1xc5x88ovaxc4x8d combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790,2790 8,465435,"Plechovxc3xbd, talxc3xadxc5x99 - Autumn",https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69,39 8,466378,Proutxc4x9bnxc3xbd vxc4x9bnec 30 cm - xc5xa1edxc3xa1,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159 

and running

mlr --csv --implicit-csv-header --headerless-csv-output  put 'if ($6 >= $7) {unset $7 }' input.csv | sed -r '/^\s*$/d' >output.txt 

you will have

5,464205,Obal na zahradnxc3xad topidlo ETNA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-etna/149210p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464205.jpg,559 5,464207,Obal na zahradnxc3xad topidlo PYRAMIDA,https://eshop.unihobby.cz/zahrada-zahradni-nabytek-zahradni-topidla-obal-na-zahradni-topidlo-pyramida/149170p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464207.jpg,559 2,464548,Elektrickxc3xbd provzduxc5xa1xc5x88ovaxc4x8d combi 3 v 1 Scheppach SC 36,https://eshop.unihobby.cz/zahrada-zahradni-technika-sekacky-elektricke-sekacky-elektricky-provzdusnovac-combi-3-v-1-scheppach-sc-36/153943p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/464548-sc36-scheppach-diy-garten-ha-kopie.jpg,2790 8,465435,"Plechovxc3xbd, talxc3xadxc5x99 - Autumn",https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-talir-plechovy-autumn/154256p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/465435.jpg,69 8,466378,Proutxc4x9bnxc3xbd vxc4x9bnec 30 cm - xc5xa1edxc3xa1,https://eshop.unihobby.cz/bydleni-domacnost-interierove-dekorace-ostatni-dekorace-kruh-prouti-30cm-7-5cm-seda/154288p/?utm_source=email&utm_medium=Katalog&utm_campaign=Osvetleni_2019,https://eshop.unihobby.cz/bin/product/4/466378-kruh-prouti-30cm7-5cm-seda.png,149,159 

If your field separator is | the command will be

mlr --csv --fs "|" --implicit-csv-header --headerless-csv-output  put 'if ($6 >= $7) {unset $7 }' input.csv | sed -r '/^\s*$/d' >output.txt 

If you want to compare not columns 6 and 7, you can modify the command using the column number you want to compare.

 
 
0
 
vote

Si su archivo puede contener separadores incorporados cotizados, entonces cualquier cosa basada en herramientas estándar como sed o abcdefhijklmnabcdefghijklmn8 va a ser frágil, mejor usar una biblioteca de análisis CSV dedicada .

Una opción es la texto :: CSV Módulo. Por ejemplo, dado

  ABCDEFGHIJKLMNABCDEFGHIJKLMN9   

luego

  /dev/sda10  

Tenga en cuenta que de forma predeterminada, el método abcdefghijklmnabcdefghghijklmnabcdefghijklmn11 contiene espacios en blanco, así como los que contienen el carácter del separador, puede configurar esto en la hora de instancias mediante la configuración abcdefghijklmn12 ex.:

  /dev/sda13 

Para hacer que PERL UNICODE-Aware, es probable que necesite agregar /dev/sda14 . Puede cambiarlo fácilmente para comparar otras columnas ex. ABCDEFGHIJKLMNABCDEFGHIJKLMN15 (Recordando que, en Perl, las matrices están indexadas por cero).


Tengo la sensación de que debería ser mucho más sencillo hacer usando Miller por condicionalmente ABCDEFGHIJKLMNABCDEFGHIJKLMN16 ING UN ABCDEFGHIJKLMNABCDEFGHIJKLMN17 Sin embargo, no pude hacer que funcione bastante bien.

 

If your file can contain quoted embedded separators, then anything based on standard tools like sed or awk is going to be fragile - better to use a dedicated CSV parsing library.

One option is perl's Text::CSV module. For example, given

$ cat file.csv foo,bar,baz,559,559 foo,field with spaces,baz,559,559 foo,"field with embedded, quoted separators",baz,2790,2790 foo,bar,baz,69,39 foo,bar,baz,149,159 

then

$ perl -MText::CSV -lne '   BEGIN{$p = Text::CSV->new()}   @f = $p->fields() if $p->parse($_) or die "Failed to parse CSV";   $n = $#f;   splice @f,-1 if $f[$n] <= $f[$n-1];   $p->print(*STDOUT,\@f) ' file.csv foo,bar,baz,559 foo,"field with spaces",baz,559 foo,"field with embedded, quoted separators",baz,2790 foo,bar,baz,69 foo,bar,baz,149,159 

Note that by default, the print method quotes fields that contain whitespace as well as those that contain the separator character - you can configure this at instantiation time by setting quote_space ex.:

  BEGIN{$p = Text::CSV->new({quote_space => 0})} 

To make perl unicode-aware, you will likely need to add -CSDL. You can easily change it to compare other columns ex. splice @f,4 if $f[4] <= $f[3] (remembering that, in perl, arrays are zero-indexed).


I have a feeling that it should be much simpler to do using miller by conditionally puting an unset $[NF] however I was unable to make it work quite right.

 
 
     
     

Relacionados problema

2  Suma Columna 2 de archivo .csv si la columna 1 es la misma  ( Sum column 2 of csv file if column 1 is the same ) 
Tengo un archivo CSV donde la columna 1 es el nombre de un gen y la columna 2 es un valor asociado con ese gen. Sin embargo, algunos genes tienen múltiples va...

14  ¿Hay alguna manera, idealmente usando la línea de comandos, para convertir múltiples archivos .CSV a una hoja de cálculo de múltiples hojas?  ( Is there a way ideally using the command line to convert multiple csv files t ) 
¿Hay una manera, idealmente usando la línea de comandos, para convertir varios archivos de ICSV a una hoja de cálculo de MULTI-hojas? Si no hay una solución...

4  Cómo hacer un script de bash para cambiar el formato de una fecha en un archivo CSV  ( How to make a bash script to change the format of a date in a csv file ) 
Tengo una serie de archivos CSV cuyo segundo campo es fechas: ABCDEFGHIJKLMNABCDEFGHIJKLMN2 ¿Cómo puedo cambiar el formato de fecha en DD / MM / YYYY pa...

1  JSON a CSV con error de juego JQ  ( Json to csv with jq play error ) 
Soy nuevo en esto. Por favor perdoname. Estoy tratando de hacer un archivo CSV de los datos de JSON. Llegué lejos pero mis datos son complejos. Estoy usando...

1  Cómo copiar contactos de iPhone en un archivo CSV  ( How to copy iphone contacts into a csv file ) 
Quiero copiar mis contactos en un archivo CSV y luego, más adelante, quiero usarlos con otra cuenta de iCloud al importar los contactos. Estoy usando la versi...

0  ¿Inserte a granel un archivo CSV en MongoDB a través del terminal Ubuntu?  ( Bulk insert a csv file into mongodb through ubuntu terminal ) 
Estoy tratando de realizar el rendimiento de la prueba MongoDB a través de Ubuntu, y me he encontrado con problemas para tratar de cargar un archivo CSV para ...

2  ¿Cómo comparar dos líneas en un archivo?  ( How to compare two lines in a file ) 
Diga que tengo un archivo foo.csv : ABCDEFGHIJKLMNABCDEFGHIJKLMN5 Quiero cómo comparar ABCDEFGHIJKLMNABCDEFGHIJKLMN6 de la última línea y verifique l...

12  Agregar columna de un .csv a otro archivo .csv  ( Add column from one csv to another csv file ) 
file1.csv ABCDEFGHIJKLMNABCDEFGHIJKLMN8 file2.csv ABCDEFGHIJKLMNABCDEFGHIJKLMN9 Salida deseada.csv Failed to fetch https://download.docker.com/...

0  Windows Findstr Ubuntu equivalente a la búsqueda .csv  ( Windows findstr ubuntu equivalent to search csv ) 
Tengo una carpeta (transacciones) con cientos de archivos .csv. Quiero buscar a través de todos los archivos CSV para una cadena en particular y obtener la sa...

0  CSV Data SpreadSheet Import tiene CR LF inesperado  ( Csv data spreadsheet import has unexpected cr lf ) 
La captura de pantalla muestra que un ruptura de CR de CR LF inesperados en la primera línea de datos CSV (consulte la flecha roja). No esperaba "directo" (e...




© 2022 respuesta.top Reservados todos los derechos. Centro de preguntas y respuestas reservados todos los derechos