如何计算bash变量中的所有字符?例如,如果我有
"stackoverflow"
Run Code Online (Sandbox Code Playgroud)
结果应该是
"13"
Run Code Online (Sandbox Code Playgroud) 我目前正在尝试创建一个脚本,该脚本将grep输入以查看某些内容是否属于某种文件类型(例如zip),尽管文件类型之前的文本可能是任何内容,例如
something.zip
this.zip
that.zip
Run Code Online (Sandbox Code Playgroud)
都属于这个类别.我试图使用通配符grep这些,到目前为止,我已经尝试过这个
grep ".*.zip"
Run Code Online (Sandbox Code Playgroud)
但是每当我这样做时,它会发现.zip文件很好,但是如果在.zip例如之后还有其他字符,它仍会显示输出,.zippppppp或者.zipdsjdskjc仍然会被grep拾取.话虽如此,我应该怎么做才能防止grep显示具有附加字符的匹配.zip?
我正在尝试创建一个脚本来greting位于/ var/log /中的日志文件.我能够grep未压缩的日志或压缩的日志(作为日志轮换的结果)但是无法在一个命令中执行这两个操作(当我尝试这样做时,我得到"二进制文件(标准输入)匹配"),甚至可以做这样的事情吗?谢谢!
我试图从多行bash变量打印特定行.我发现了以下内容:
while read line; do echo LINE: "$line"; done <<< "$x"
Run Code Online (Sandbox Code Playgroud)
其中x将是变量,但它只是打印出所有行而不是只打印一行(比如说第1行).我怎么能适应这个来打印出一条特定的线而不是所有线呢?(希望避免将变量写入文件)
我正在研究一个脚本,该脚本将用于从远程位置传输文件(使用rsync),然后对检索到的内容执行一些基本操作。
当我最初连接到远程位置(不运行rsync守护程序时,我只是使用rsync来检索文件)时,我被放置在非标准外壳中。为了进入bash shell,我需要输入“ run util bash”。有没有一种方法可以在rsync开始传输文件之前执行“ run util bash”?
如果有办法使用scp / ftp而不是rsync,我可以接受其他建议。
我目前正在研究一个基于C的日志解析器(制作原始基于bash的日志解析器的C版本),我想知道如果有拙劣的输入,我应该如何防止缓冲区溢出,几乎只是一种方式,当内存不足时自动停止程序,我也提供了下面的代码,谢谢!
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
void main(int argc, char *argv[], char *envp[])
{
FILE *fd;
char *name;
name = getenv("MCEXEC_PLAYERNAME");
char *filename;
filename = malloc(sizeof "/home/minecraft/freedonia/playerdata/deathlog-.txt" - 1 + strlen(name) + 1);
if (!filename) exit(EXIT_FAILURE);
sprintf(filename,"/home/minecraft/freedonia/playerdata/deathlog-%s.txt",name);
char buff[1024];
if ((fd = fopen(filename, "r")) != NULL)
{
fseek(fd, 0, SEEK_SET);
while(!feof(fd))
{
memset(buff, 0x00, 1024);
fscanf(fd, "%[^\n]\n", buff);
}
printf("%s\n", buff);
}
else
printf( "fail" );
}
Run Code Online (Sandbox Code Playgroud)
下面的代码是尝试实现fgets和scanf,但是当我运行程序时,它只是坐在那里而不显示任何输出
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#define _GNU_SOURCE
void …Run Code Online (Sandbox Code Playgroud) 我有一个日志文件,其中日志文件行前面带有以下时间戳格式:
%Y-%m-%d_%H:%M:%S:(最后一个冒号是故意的)
如何使用 sed 删除时间戳(将通过 sed 捕获日志文件)?我对 sed 有一些经验,尽管我不确定最好的方法是什么
编辑:这是标准日志行的样子:
2014-04-12_01:55:12:4391465 被禁止。
删除时间戳后,“12:”之后的所有内容都应保留
谢谢
我正在尝试在powershell脚本中安排一个命令来使用Windows调度程序运行.此命令依赖于特定于用户的环境变量,并且由于计划任务无法访问这些变量,因此我决定尝试在powershell脚本本身内部设置变量.
为了在脚本中复制这个,我尝试使用:
$env:DCRCLIFILE = "C:\Users\pzsr7z\Desktop\DCRCLIFILE.txt"
Run Code Online (Sandbox Code Playgroud)
但由于某种原因,当我按照这种方式进行设置时,程序将无法正常工作,即使在使用"普通"用户环境变量运行程序时它完全正常.
在powershell脚本中设置环境变量时,我应该做些什么吗?我不确定为什么这不起作用.我已经验证环境变量实际上已经创建,所以它不像powershell命令失败.
如果我有一个字符串:Hi:my:name:is:lacrosse1991:我怎么能strtok用来检索is(换句话说第四个字段)?这将类似于你在bash中使用cut的方式,我会这样做cut -d ":" -f 4.如果这是一个错误的功能做这样的事情,请让我知道,任何帮助非常感谢,谢谢!(我刚刚开始自学C语言,如果这些是我要求的明显问题,我会提前道歉)
这是我将使用的剪切命令的示例
x=$(echo "$death" | cut -d ':' -f 4)
y=$(echo "$death" | cut -d ':' -f 5)
z=$(echo "$death" | cut -d ':' -f 6)
Run Code Online (Sandbox Code Playgroud) 我目前正在使用一个代码示例,最初设计用于获取参数,然后在当前目录中搜索该参数,我试图通过替换"."来搜索另一个目录(/ dev/shm to exact). " 使用"/ dev/shm"但是当我搜索某些内容时代码没有任何内容*(请注意通配符).通配符搜索在当前目录中正常工作,所以我不认为这是外卡是问题,如果有人可以帮助我,虽然我真的很感激,谢谢!
#include <dirent.h>
#include <errno.h>
#include <stdio.h>
#include <string.h>
static void lookup(const char *arg)
{
DIR *dirp;
struct dirent *dp;
if ((dirp = opendir(".")) == NULL) {
perror("couldn't open '.'");
return;
}
do {
errno = 0;
if ((dp = readdir(dirp)) != NULL) {
if (strcmp(dp->d_name, arg) != 0)
continue;
(void) printf("found %s\n", arg);
(void) closedir(dirp);
return;
}
} while (dp != NULL);
if (errno != 0)
perror("error reading directory");
else
(void) printf("failed to …Run Code Online (Sandbox Code Playgroud)