Стена заставляет всех вводить что-то, чтобы вернуться к приглашению

Просто вызовите awk соответствующим образом

# print first column:
cat list1.csv | awk '{ORS="\t"} {print $1}'

Или как полный сценарий:

#!/bin/bash
column=$1
shift;
for item in "$@" ; do
  #process item
  echo "Processing $item:"
  cat $item | awk '{ORS="\t"} {print "'"$column"'"}'
done

Полезно:

https://stackoverflow.com/questions/ 2021982 / awk-без-печати-новой строки https://stackoverflow.com/questions/19075671/how-to-use-shell-variables-in-awk-script

1
18.03.2018, 04:21
1 ответ

То, что вы испытываете, является просто следствием того, как фоновые процессы совместно используют консоль. :любой процесс, работающий с доступом к вашей консоли, может делать то же самое. Поскольку вывод происходит из процесса, отличного от оболочки, он не знает, что текст есть! Если вы находитесь в редакторе, вы также получите этот текст.

Чтобы увидеть это в контролируемой среде, попробуйте следующее:

$ (sleep 5; echo -e "\n\nWhere did this come from?") &
[1] 18898
$ ping localhost
PING localhost(localhost (::1)) 56 data bytes
64 bytes from localhost (::1): icmp_seq=1 ttl=64 time=0.039 ms
64 bytes from localhost (::1): icmp_seq=2 ttl=64 time=0.027 ms


Where did this come from?
64 bytes from localhost (::1): icmp_seq=3 ttl=64 time=0.028 ms
64 bytes from localhost (::1): icmp_seq=4 ttl=64 time=0.033 ms
64 bytes from localhost (::1): icmp_seq=5 ttl=64 time=0.028 ms
^C
--- localhost ping statistics ---
5 packets transmitted, 5 received, 0% packet loss, time 4099ms
rtt min/avg/max/mdev = 0.027/0.031/0.039/0.004 ms
[1]+  Done                    ( sleep 5; echo -e "\n\nWhere did this come from?" )
$

Очевидно, что pingне печатал "Откуда это взялось?"; это произошло из фонового процесса.

0
28.01.2020, 00:38

Теги

Похожие вопросы