Kullanmanın çok daha basit yolu tr
$ tr '_' ',' < input.csv | tr -d '"'
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Bunun çalışma şekli tr
iki argümanı alır - değiştirilecek karakter kümesi ve bunların değiştirilmesi. Bu durumda sadece 1 karakterlik setlerimiz vardır. input.csv
Girişin tr
stdin akışını <
kabuk operatörü üzerinden yönlendiririz ve elde edilen çıktıyı tr -d '"'
çift tırnakları silmek için yönlendiririz.
Ama awk
bunu da yapabilir.
$ cat input.csv
"1_1_0_0_76"
"1_1_0_0_77"
"1_1_0_0_78"
$ awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv
1,1,0,0,76
1,1,0,0,77
1,1,0,0,78
Bunun çalışma şekli biraz farklıdır: awk her dosya satır satır okur, her satır içi komut dosyasıdır /Pattern match/{ codeblock}/Another pattern/{code block for this pattern}
. Burada bir modelimiz yok, bu yüzden her satır için kod bloğu yürütmek anlamına geliyor. gsub()
işlevi bir satır içindeki genel ikame için kullanılır, bu nedenle alt çizgileri virgülle ve çift tırnak işaretlerini boş bir dizeyle (karakteri etkili bir şekilde silme) değiştirmek için kullanırız. 1
Varsayılan basitçe hattını baskı için kod bloğunu, eksik desen maçın yerinde olduğundan; başka bir deyişle ile kod bloğu gsub()
işi yapar ve 1
sonucu yazdırır.
>
Çıktıyı yeni bir dosyaya göndermek için kabuk yeniden yönlendirmesini ( ) kullanın:
awk '{gsub(/_/,",");gsub(/\"/,"")};1' input.csv > output.csv