2014-07-14 6 views
0

CSV 파일의 첫 번째 입력란을 전송하려고하지만 특정 지연이있는 예 : 모든 요소 다음에 1 초. 첫 번째 필드를 가져 와서 netcat을 사용하여 보낼 awk 사용하고 있습니다. 다음 명령을 사용하고 있지만 지연이 없습니다.모든 요소 다음에 지연이있는 netcat에 awk 출력을 할당하는 방법은 무엇입니까?

awk -F, '{print $1}' sample.csv | netcat -lk 9999 

힌트를 주시면 감사하겠습니다.

+1

'bash'에서 사용하고'sleep 1'을 사용하십시오 – Jotne

+0

@Jotne : 우리는 같은 생각을 가지고 있습니다 :) –

+0

http://expect.sourceforge.net/을보고 싶을 수도 있습니다. 'sleep '을 사용하여 수행하려고하는 대화 형 작업들에 대한 설명 – Soren

답변

3

당신은 수면으로 쉘 명령을 실행할 AWK 내에서 시스템을 사용할 수 있습니다.

awk -F, '{system("sleep 1");print $1}' sample.csv | netcat -lk 9999 

그러나 경고의 말씀, 시스템을 사용하는 것은 때때로 AWK 시스템 호출을 취소하지만 같은 어려운 ^C과를 통해 명령 절반 방법을 취소 할 수 있습니다.

+1

awk의 시스템에서 쉘을 사용하는 것이 더 좋을 것입니다. Awk가 쉘에 인수를 전달하고, 쉘에서 sleep을 실행하고, 모든 루프에 1 개의 추가 프로세스가 있기 때문입니다. 그런 사소한 일에 정말로 필요한 것은 아니지만. – konsolebox

+0

@konsolebox : 완전히 동의합니다 –

+0

@IdrissNeumann 0.04 초 지연해야합니다. 나는 이것으로 할 수 있었지만 껍질로는 할 수 없었다. 어떻게 버전을 0.04 초 지연시킬 수 있습니까? – Laeeq

1

이 경우 bash 대신 awk을 사용할 수

while IFS="," read -ra array; do echo "${array[0]}"; sleep 1; done < sample.csv|netcat -lk 9999 
+1

해결책이 잘못되었습니다 :'netcat'은 한 번이 아닌 각 행에 대해 호출되고 입력은 1 초 간격으로 조절됩니다. – Soren

+0

@ SOLN : 지금 당장 수정 됨) –

+0

'echo "$ array"'가 없습니다. – konsolebox