Заміна порожнього простору пропущеного значення нулем


13

У мене є текстовий файл input.txt з обмеженими вкладками близько 30K рядків, я хотів би перевірити кожну рядок (s1..s30K рядків) на відсутність значення (тобто порожній пробіл) і заповнити пропущене значення нульовим значенням.

input.txt

 id  no1  no2  no3  no4
 s1  23   34   45   12
 s2       4    4      
 s3  4         8    0

out.txt

id  no1  no2  no3  no4
s1  23   34   45   12
s2  0     4    4    0  
s3  4     0    8    0

Відповіді:


14

Ви можете зробити це так з awk:

awk 'BEGIN { FS = OFS = "\t" } { for(i=1; i<=NF; i++) if($i ~ /^ *$/) $i = 0 }; 1' file

Пояснення

Встановлення FS та OFS на вкладку забезпечує правильний розмір виводу. Цикл for-loo розглядає кожне поле і встановлює його в нуль, якщо воно порожнє. Той, що знаходиться в кінці, - це стенограма для { print $0 }.


5

Я вважаю за краще:

sed 's/<TAB> /<TAB>0/g' <input.txt >output.txt

Замініть <TAB>реальним символом TAB (як правило, отриманим ударом Ctrl-V, потім Tab)

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.