Linux 如何使用tail和awk从文件中获取数据

Linux 如何使用tail和awk从文件中获取数据,linux,awk,tail,Linux,Awk,Tail,我有一个文件,我想从中获取一些数据。 我正在运行GNU/Linux 文件: 我运行此命令以获取数据: tail -n 1 scan.txt > s.txt | awk '/%/ { print $2 }' s.txt 想要的输出: /home/gustaf/.cache/mozilla/firefox/mwad0hks.default/startupCache/...[2K 但我得到的却是: [~100.0%]/home/gustaf/.cache/mozilla/firefox/m

我有一个文件,我想从中获取一些数据。 我正在运行GNU/Linux

文件:

我运行此命令以获取数据:

tail -n 1 scan.txt > s.txt | awk '/%/ { print $2 }' s.txt
想要的输出:

/home/gustaf/.cache/mozilla/firefox/mwad0hks.default/startupCache/...[2K
但我得到的却是: [~100.0%]/home/gustaf/.cache/mozilla/firefox/mwad0hks.default/startupCache/..[2K

我应该怎么做才能得到结果

更多详细信息:

为了生成文件,我使用以下命令:avgscan--heur/home/gustaf>scan.txt

在跑步过程中,我尝试了两种解决方案,结果都是一样的:

/home/gustaf/.mozilla/firefox/mwad0hks.default/ghostery/patterns-...[2K
[~5.1%]

我在python脚本中使用scan.txt。管道错误。应该是:

tail -n 1 scan.txt  | awk '/%/ { print $2 }'
您不需要
s.txt

您也可以尝试

awk '{ arg=$2 } END {print arg}' scan.txt 
但是输出在我的gnome终端上不可见(我想是由于文本末尾的终端转义码)

如果删除最后一部分(点和转义码),则可以在终端上获得可见的输出,例如

产生

/home/gustaf/.cache/mozilla/firefox/mwad0hks.default/startupCache/

我已经解决了这个问题

之前:

cmd = "awk '{ arg=$2 } END {sub(/\.\..*$/,arg); print arg}' scan.txt"
x = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
AvgAPI.lastscanned = x.stdout.read()
现在:


新解决方案有一些小缺陷,但效果令人满意。

对我来说很好。您没有向我们展示什么?当我使用您的解决方案时,我的应用程序输出的给定文件中的终端转义字符有问题:/home/gustaph/.mozilla/firefox/mwad0hks.default/cookies.sqlite:/c70您能检查一下我们是否正在使用相同的输入文件?我知道您在文件中给出的最后一行是
/home/gustaf/.cache/mozilla/firefox/mwad0hks.default/startupCache/…[2K
cmd = "awk '{ arg=$2 } END {sub(/\.\..*$/,arg); print arg}' scan.txt"
x = subprocess.Popen(cmd, shell=True, stdout=subprocess.PIPE)
AvgAPI.lastscanned = x.stdout.read()
Line_len = 1200
SEEK_END = 2
file = open('scan.txt', "r")
file.seek(-Line_len, SEEK_END)
data_scanfile_not_cleaned = str(file.read(Line_len)).split(" ")[1].strip()
if not data_scanfile_not_cleaned.startswith('/'):
   file.close()
   AvgAPI.lastscanned = ""
   time.sleep(0.1)
else:
   data_scanfile_re = re.sub(r'[~\s+(\d+)%]','',data_scanfile_not_cleaned)
   data_scanfile_strip = data_scanfile_re.strip("[.]")
   data_scanfile = data_scanfile_strip.strip("[K")
   AvgAPI.lastscanned = data_scanfile
   file.close()
   time.sleep(0.1)