파일 목록을 반복하여 마지막 줄을 추출하고 열 8, 9, 10을 인쇄합니다. 또한 실제로 처리 중인 총 레코드 수(NR)인 "이벤트 번호"를 출력에 인쇄해야 합니다. 첫 번째 열의 이벤트/기록 번호를 아래와 같이 출력 파일로 인쇄하려면 어떻게 해야 합니까?
for i in `ls -d *mcp`; do
tail -1 "$i" | awk '{ printf "%s %s %s\n", $8, $9, $10}' >> ${Pout}${output}
done
echo "Finished Looping through each file."
내가 원하는 출력은 다음과 같습니다.
1 45 60 5
2 30 67 3
3 40 12 4
.
.
.
'45 열은 $8, 60 열은 $9, 5 열은 $10를 나타냅니다. 1,2,3 등이 출력해야 할 것입니다. 본질적으로 줄 번호를 인쇄해야 합니다.
답변1
이 시도:
for i in ./*.mcp; do
if [ -f "$i" ]; then
tail -1 "$i"
fi
done | awk '{ print NR, $8, $9, $10 }'
답변2
GNU awk
(버전 4.x)를 사용하여 다음을 시도해 보십시오.
awk 'ENDFILE { printf "%d %s %s %s\n", ++c, $8, $9, $10}' *mcp > "${Pout}${output}"
echo "Finished Looping through each file."
다른 awk
s 및 쉘과 유사하게 다음을 시도하십시오 bash
.
for f in *mcp
do
awk -v c="$((++c))" 'END { printf "%d %s %s %s\n", c, $8, $9, $10}' "$f"
done > "${Pout}${output}"
echo "Finished Looping through each file."