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 triki 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.csvGirişin trstdin akışını <kabuk operatörü üzerinden yönlendiririz ve elde edilen çıktıyı tr -d '"'çift tırnakları silmek için yönlendiririz.
Ama awkbunu 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. 1Varsayı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 1sonucu 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