我的脚本是:
#!/usr/bin/perl -w
my $line="1 2 3 4 5 6 7";
print $line;
my $thirdlast=`print $line |awk '{print $(NF-3)}'`;
print $thirdlast;
Run Code Online (Sandbox Code Playgroud)
输出是:
1 2 3 4 5 6 7 awk: 0602-542 There is an extra ) character.
The source line is 1.
The error context is
{print 201 1 >>> 201NF-3) <<<
Syntax Error The source line is 1.
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
awk: 0602-542 There is an extra ) character. …Run Code Online (Sandbox Code Playgroud) 我是编写脚本的新手。所以我希望这很简单。我正在编写的脚本用于收集系统信息并将其保存为 html 文件。
当我运行时:
sudo lshw -short
Run Code Online (Sandbox Code Playgroud)
它列出了系统上的所有硬件。
当我运行时:
sudo lshw -short | grep processor
Run Code Online (Sandbox Code Playgroud)
它返回(点代表空格)
/0/4 ...........................................processor................................................ AMD FX(tm)-6100 Six-Core Processor"
Run Code Online (Sandbox Code Playgroud)
我的问题是如何删除处理器前面的所有内容。或者我如何只显示“处理器”之后的内容。我尝试了 grep 的其他几个选项,并试图找到一个 awk 命令来工作,但我的尝试失败了。
如果需要更多信息,请告诉我。
有人可以建议如何在 perl 脚本中使用命令管道吗?特别是涉及调用的命令awk?
我正在尝试创建一个 perl 脚本,该脚本将使用读取磁盘使用情况df -H并返回输出的倒数第二行,其中显示了 %use。在终端中直接输入命令会返回所需的输出。
df -H | awk '{print $(NF-3)}'
Run Code Online (Sandbox Code Playgroud)
此命令返回正确的结果。但是当在反向滴答实用程序中使用相同的命令时,perl 脚本会抛出很多错误。
$thirdlast=`df -H | awk '{print $(NF-3)}'`;
print $thirdlast;
Run Code Online (Sandbox Code Playgroud)
为什么相同的命令没有在脚本中运行?有没有其他方法可以返回所需的结果?
输入:
blah?foobar1?blah
Run Code Online (Sandbox Code Playgroud)
期望的输出:
foobar1
Run Code Online (Sandbox Code Playgroud)
我想获取两个“?”之间的文本 人物。
假设总是有 0 或 2 个“?” 字符,使事情变得更容易。
我尝试了以下操作,但我不知道如何让它知道它是哪个事件:
echo "blah?foobar1?blah" | sed -n '/?/,/?/p'
Run Code Online (Sandbox Code Playgroud) 我command not found在此代码中收到此错误。我想打印一个句子的第一个单词
第一个代码(需要的结果= 1)
abc="1 hello world"; L=$($abc|awk '{print $1}'); echo $L
1: command not found
Run Code Online (Sandbox Code Playgroud)
第二个代码(需要的结果= mp4)
abc="mp4 hello world"; L=$($abc|awk '{print $1}'); echo $L
No command 'mp4' found, did you mean:
Command 'mpp' from package 'makepp' (universe)
Command 'mpy' from package 'yorick-mpy-mpich2' (universe)
Command 'mpy' from package 'yorick-mpy-openmpi' (universe)
Command 'mpc' from package 'mpc' (universe)
Command 'm4' from package 'm4' (main)
Command 'mp4h' from package 'mp4h' (universe)
Command 'mpv' from package 'mpv' (universe)
Command 'mpd' …Run Code Online (Sandbox Code Playgroud) 我正在使用该命令来获取登录我机器的用户列表,但我无法理解该命令的含义。
awk -F':' '$2 ~ "\$" {print $1}' /etc/shadow
Run Code Online (Sandbox Code Playgroud) 我有包含不同类型文本格式的文件,我的目标是仅提取 HTML 部分并使用此 HTML 代码创建一个文件。我认为使用grepor是可能的awk。我的文件还包含这样的行:
Sender name `<test@email.com>`
Run Code Online (Sandbox Code Playgroud)
我写了这个脚本cat file1.html | grep -E "<[^>]*>"。但问题是它也将行输出为Sender name等。我只想在<html>标签之后提取内容。所以这对我没有用:
Return-Path: <test@test.com>
for <test@localhost> (single-drop); Thu, 21 Sep 2017 18:34:07 +0400 (+04)
Return-path: <test@test.com>
(envelope-from <test@test.com>)
References: <test@test.com>
From: test user <test@test.com>
X-Forwarded-Message-Id: <test@test.com>
Message-ID: <test@test.com>
In-Reply-To: <test@test.com>
Run Code Online (Sandbox Code Playgroud) 我有两组数据。我想通过两个键值(storm_ID、Cell_ID)加入它们。
第一个数据集看起来像:
Storm_ID,Cell_ID,Wind_speed
2,10236258,27
2,10236300,58
2,10236301,25
3,10240400,51
Run Code Online (Sandbox Code Playgroud)
第二个数据集看起来像:
Storm_ID,Cell_ID,Storm_surge
2,10236299,0.27
2,10236300,0.27
2,10236301,0.35
2,10240400,0.35
2,10240401,0.81
4,10240402,0.11
Run Code Online (Sandbox Code Playgroud)
现在我想要一个看起来像这样的输出:
Storm_ID,Cell_ID,Wind_speed,Storm_surge
2,10236258,27,0
2,10236299,0,0.27
2,10236300,58,0.27
2,10236301,25,0.35
2,10240400,0,0.35
2,10240401,0,0.81
3,10240400,51,0
4,10240402,0,0.11
Run Code Online (Sandbox Code Playgroud)
我尝试在 Linux 中使用 join 命令来执行此任务,但失败了。Join 命令跳过了数据库中不匹配的行。我可以使用 Matlab,但数据大小超过 100 GB,这使得这项任务非常困难。有人可以请指导我吗?我可以使用 SQL 或 python 来完成这个任务。
感谢各种贡献者解决了我之前的请求。
我需要在日期列中添加分钟以获取新的日期时间戳值。我有一个文件:afile.txt
1,2012-02-16,abc,aa,455,340
3,2015-02-16,dsa,dl,350,200
2,2015-02-16,aws,sw,555,180
4,2015-02-16,yyz,aa,1220,210
Run Code Online (Sandbox Code Playgroud)
我使用过 awk(之前由贡献者提供给我)-
awk -F, '/,/ {
printf "%s, %s, %s, %s, %s %02d:%02d, %s\n",
$1, $2, $3, $4,
$2, int($5 / 100), $5 % 100,
$6
}' afile.txt > bfile.txt
bfile.txt
1, 2012-02-16, abc, aa, 2012-02-16 04:55, 340
3, 2015-02-16, dsa, dl, 2015-02-16 03:50, 200
2, 2015-02-16, aws, sw, 2015-02-16 05:55, 180
4, 2015-02-16, yyz, aa, 2015-02-16 12:20, 210
Run Code Online (Sandbox Code Playgroud)
我想添加第 5 列和第 6 列并获取新的时间戳。
非常感谢您的帮助。
您好,我想计算特定长度的单词数。我正在使用这个命令。
awk 'length == 2' mydict.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
这段代码给出了我想要的,但如果尝试放置变量而不是数字 2,它就不起作用。代码是这样的
awk 'length == $var' mydict.txt | wc -l
Run Code Online (Sandbox Code Playgroud)
终端打印 0。我能做什么?