簡體   English   中英

Bash腳本將僅替換第一行

[英]Bash script that will replace only the first line

我想使用tcpdump提取數據包的時間戳並將其放入文件中,以使最新的時間戳替換第一行(該行為空或包含倒數第二個數據包的時間戳)。 該文件僅應具有1行條目(即。 最新數據包的時間戳。

這是我所做的:

sudo tcpdump -i eth0 -l | cut -d . -f1 >  test.txt

cat test.txt
16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05

但是我想要的只是最新的時間戳:

cat test.txt
16:08:05

有任何想法嗎?

根據我的測試,看起來您的腳本將永遠運行,您可能需要查看另一個進程中的最后一個數據包,不是嗎?

$ cat test.txt

16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05

如果您只想要最新的數據包(即最后一行),請嘗試

$ tail -1 test.txt

16:08:05

如果您想與其他人一起查看最新的數據包,請嘗試

$ tail -1 test.txt > tmp_out; cat test.txt >> tmp_out; cat tmp_out

16:08:05
16:08:04
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05
16:08:05

使用awk,您可以執行以下操作:

sudo tcpdump -i en0 -l -c 5 2>/dev/null | awk -F'\\.' '$1~/^[012][0-9]:/{p=$1} 
   END{print p > "output"}'

cat output
08:27:51

這將獲得最大時間戳並將其存儲在名為output文件中。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM