Seri bağlantı noktasında gelen bir akışım var, saniyede bir kez yeni çizgiler görünüyor
wren@Raven:~$ cat /dev/ttyUSB0
A_Sensor1,B_22.00,C_50.00
A_Sensor1,B_22.00,C_50.00
A_Sensor1,B_22.00,C_50.00
A_Sensor1,B_22.00,C_50.00
A_Sensor1,B_22.00,C_50.00
Boş satırları soymak ve kalanları zaman damgası almak istiyorum.
sed boş satırları cull ve zaman damgası ekleyecek, ancak zaman damgası güncelleme yapamıyorum, sadece çağrıldığı zamanı bildirir:
wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' -e "s/$/`date +\,%F\,%T`/"
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
A_Sensor1,B_22.00,C_50.00,2014-05-14,09:44:42
^C
Ben ts, Moreutils bir parçası buldum ve bir güncelleme zaman damgası almak için içine boru olabilir.
wren@Raven:~$ cat /dev/ttyUSB0 | ts
May 14 09:49:26 A_Sensor1,B_22.00,C_50.00
May 14 09:49:26
May 14 09:49:27 A_Sensor1,B_22.00,C_50.00
^C
Ancak, ts'i sed ile düzgün bir şekilde birleştiremiyorum.
İstediğimi yapması gerektiği gibi görünen bu, hiç çıktı üretmez
wren@Raven:~$ cat /dev/ttyUSB0 | sed -e '/^$/d' | ts
^C
wren@Raven:~$
Bununla birlikte, boruların sırasını tersine çevirmek bir çıktı üretir, ancak elbette artık boş olmayan hatları soymaz. Diğer ikameler iyi çalışıyor, bu yüzden sed için borunun çalıştığını biliyorum.
wren@Raven:~$ cat /dev/ttyUSB0 | ts | sed -e '/^$/d'
May 14 10:07:25 A_Sensor1,B_22.00,C_50.00
May 14 10:07:25
May 14 10:07:26 A_Sensor1,B_22.00,C_50.00
May 14 10:07:26
^C
Bu yüzden biraz şaşkınım. Muhtemelen istenmeyen satırları sed kaldırabilirsiniz, ancak kaldırmadan önce zaman damgası yanlış bir yaklaşım olmalıdır.
Bir açıklama ve yardım için minnettar olurum.
sed -u
. Bir blok arabelleğe alma ve satır arabelleğe alma sorunudur.