我想使用linux bash命令从我的文件中删除所有控制字符.
有一些控制字符,如EOF(0x1A),尤其是当我在另一个软件中加载我的文件时导致问题.我想删除这个.
这是我到目前为止所尝试的:
这将列出所有控制字符:
cat -v -e -t file.txt | head -n 10
^A+^X$
^A1^X$
^D ^_$
^E-^D$
^E-^S$
^E1^V$
^F%^_$
^F-^D$
^F.^_$
^F/^_$
^F4EZ$
^G%$
Run Code Online (Sandbox Code Playgroud)
这将使用grep列出所有控制字符:
$ cat file.txt | head -n 10 | grep '[[:cntrl:]]'
+
1
-
-
1
%
-
.
/
Run Code Online (Sandbox Code Playgroud)
匹配cat命令的上述输出.
现在,我运行以下命令来显示所有不包含控制字符的行,但它仍然显示与上面相同的输出(带有控制字符的行)
$ cat file.txt | head -n 10 | grep '[^[:cntrl:]]'
+
1
-
-
1
%
-
.
/
Run Code Online (Sandbox Code Playgroud)
这是十六进制格式的输出:
$ cat file.txt | head -n 10 | grep '[[:cntrl:]]' | …
Run Code Online (Sandbox Code Playgroud) 我在Perl中编写了一个使用多线程的程序.我正在使用这个程序来了解如何在Perl中实现多线程.
首先简要概述一下程序打算做什么:它将从文本文件中一次读取一个URL列表.对于每个URL,它将调用子例程(将URL作为参数传递)并向其发送HTTP HEAD请求.收到HTTP响应标头后,它将从响应中打印服务器标头字段.
对于每个URL,它启动一个调用上述子例程的新线程.
问题:主要问题是程序有时间歇性地崩溃.它在其他时间正常运行.它似乎是不可靠的代码,我相信有一种方法可以使它可靠地工作.
代码:
#!/usr/bin/perl
use strict;
use warnings;
use threads;
use WWW::Mechanize;
no warnings 'uninitialized';
open(INPUT,'<','urls.txt') || die("Couldn't open the file in read mode\n");
print "Starting main program\n";
my @threads;
while(my $url = <INPUT>)
{
chomp $url;
my $t = threads->new(\&sub1, $url);
push(@threads,$t);
}
foreach (@threads) {
$_->join;
}
print "End of main program\n";
sub sub1 {
my $site = shift;
sleep 1;
my $mech = WWW::Mechanize->new();
$mech->agent_alias('Windows IE 6');
# trap any error which occurs while …
Run Code Online (Sandbox Code Playgroud) 我编写了一个C程序,它调用psapi.h中定义的函数GetModuleInformation()
我使用Microsoft Visual Studio C++命令行编译器(cl.exe)来编译和链接程序.
我已经包含了psapi.h头文件:
#include <psapi.h>
Run Code Online (Sandbox Code Playgroud)
当我尝试编译时使用:
cl program.c
Run Code Online (Sandbox Code Playgroud)
它生成目标文件,但在链接阶段失败并出现错误:
program.obj : error LNK2019: unresolved external symbol _GetModuleInformation@16 ref
erenced in function _main
program.exe : fatal error LNK1120: 1 unresolved externalsprogram.obj : error LNK2019: unresolved external symbol _GetModuleInformation@16 ref
Run Code Online (Sandbox Code Playgroud)
我还将psapi.lib文件放在放置源代码文件(program.c)的同一文件夹中,但即便如此,我也会收到与上面相同的错误消息.
如何使用命令行编译器(cl.exe)成功链接它?
我正在尝试使用 python 中的 Z3 库,但它不起作用。它给出了一个错误 Int 未定义。
我使用 pip 安装了 z3 模块,如您所见,导入 lib 时没有抛出错误消息。我使用的是 Mac OS X 和 python 版本 2.7.6
>>> from z3 import *
>>> x = Int('x')
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'Int' is not defined
Run Code Online (Sandbox Code Playgroud) 我想删除当前目录中名称中不包含字符串"sample"的所有文件.
例如,
test_final_1.exe
test_initial_1.exe
test_sample_1.exe
test_sample_2.exe
Run Code Online (Sandbox Code Playgroud)
我想删除名称中包含样本的文件以外的所有文件.
for %i in (*.*) do if not %i == "*sample*" del /f /q %i
Is the use of wild card character in the if condition allowed?
Does, (*.*) represent the current directory?
Run Code Online (Sandbox Code Playgroud)
谢谢.
我有一个包含多个连续字符序列的字符串,例如:
aaabbcccdddd
Run Code Online (Sandbox Code Playgroud)
我想把它表示为: a3b2c3d4
截至目前,我已经想出了这个:
#! /usr/bin/perl
$str = "aaabbcccdddd";
$str =~ s/(.)\1+/$1/g;
print $str."\n";
Run Code Online (Sandbox Code Playgroud)
输出:
abcd
Run Code Online (Sandbox Code Playgroud)
它将连续字符存储在捕获缓冲区中,并仅返回一个.但是,我想要一种方法来计算捕获缓冲区中连续字符的数量,然后只显示一个字符,后跟该计数,以便它显示输出a3b2c3d4
而不是abcd
.
上述正则表达式需要进行哪些修改?
我正在编写一个程序,我需要初始化一个保存文本的消息缓冲区.我能够使它工作,但我在下面用C语言初始化字符串的各种方式编写,我想了解其中的区别.另外,哪种方法最适合初始化wchar_t/char字符串?
方法一:
wchar_t message[100];
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这将分配一个200字节的内存空间(我认为wchar_t的大小是Windows操作系统上的2字节).此内存分配是静态的,并且在编译时将在可执行文件的.data部分内分配.
message也是一个内存地址本身,指向字符串的第一个字符.
这种初始化字符串的方法对我有用.
方法二:
wchar_t *message;
message=(wchar_t *) malloc(sizeof(wchar_t) * 100);
Run Code Online (Sandbox Code Playgroud)
此方法首先将变量消息初始化为指向wchar_t的指针.它是一个广泛的字符数组.
接下来,它将为此字符串动态分配内存.我想我已经正确地编写了它的语法.
当我在我的程序中使用此方法时,它不会读取字符串中的空格后的文本.
Example text: "This is a message"
Run Code Online (Sandbox Code Playgroud)
它只会将"This"读入变量消息,之后不会显示任何文本.
方法三:
wchar_t *message[100];
Run Code Online (Sandbox Code Playgroud)
这将消息定义为包含100个宽字符的数组和指向wchar_t的指针.这种初始化消息的方法很有效.但是,我不确定这是不是正确的方法.因为消息本身指向字符串中的第一个字符.所以,用尺寸初始化它是否正确?
我想更深入地理解它,初始化字符串的正确方法.同样的概念也可以扩展为一串字符.
我正在编写一个基本脚本,它只是从网页中提取所有链接.它是用Perl编写的,并使用WWW :: Mechanize和HTML :: Treebuilder :: Xpath模块,这两个模块都是通过CPAN安装的.
我知道只使用WWW :: Mechanize就可以轻松完成,但是我也想学习使用XPath.
因此,脚本将解析整个网页,并检查每个锚标记的href属性,提取链接并将其打印到控制台/将其写入文件.请注意,在下面的脚本中,我没有使用use strict,因为我只是写这篇文章来澄清和理解使用XPath遍历HTML树的概念.
这是脚本:
#! /usr/bin/perl
use WWW::Mechanize;
use HTML::TreeBuilder::XPath;
use warnings;
$url="https://example.com";
$mech=WWW::Mechanize->new();
$mech->get($url);
$tree=HTML::TreeBuilder::XPath->new();
$tree->parse($mech->content);
$nodes=$tree->findnodes(q{'//a'}); # line is modified later.
foreach $node($nodes)
{
print $node->attr('href');
}
Run Code Online (Sandbox Code Playgroud)
它给出了一个错误:
Can't locate object method "attr" via package "XML::XPathEngine::Literal" at pagegetter.pl line 23.
Run Code Online (Sandbox Code Playgroud)
我修改了脚本如下:
$nodes=$tree->findnodes(q{'//a/@href'});
while($node=$nodes->shift)
{
print $node->attr('href');
}
Run Code Online (Sandbox Code Playgroud)
错误:
Can't locate object method "shift" via package "XML::XPathEngine::Literal"
Run Code Online (Sandbox Code Playgroud)
我不确定,如何打印href属性的值.
$ nodes应该包含所有href属性的列表?我相信它不存储价值,而是指向它?
我尝试搜索和阅读示例,但我不知道如何去做.
谢谢.
我使用模块导出的uniq函数,List :: MoreUtils来查找数组中的uniq元素.但是,我希望它以不区分大小写的方式查找uniq元素.我怎样才能做到这一点?
我使用Data :: Dumper转储了Array的输出:
#! /usr/bin/perl
use strict;
use warnings;
use Data::Dumper qw(Dumper);
use List::MoreUtils qw(uniq);
use feature "say";
my @elements=<array is formed here>;
my @words=uniq @elements;
say Dumper \@words;
Run Code Online (Sandbox Code Playgroud)
输出:
$VAR1 = [
'John',
'john',
'JohN',
'JOHN',
'JoHn',
'john john'
];
Run Code Online (Sandbox Code Playgroud)
预期的输出应该是:约翰,约翰约翰
只有2个元素,其余全部应该被过滤,因为它们是同一个单词,只有区别在于大小写.
如何删除忽略大小写的重复元素?
我使用awk使用特定的分隔符将字符串拆分为数组.现在,我想对数组的每个元素执行一些操作.
我能够像这样提取单个元素:
#! /bin/bash
b=12:34:56
a=`echo $b | awk '{split($0,numbers,":"); print numbers[1]}'`
echo $a
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
#! /bin/bash
b=12:34:56
`echo $b | awk '{split($0,numbers,":");}'`
for(i=0;i<length(numbers);i++)
{
// perform some operation using numbers[i]
}
Run Code Online (Sandbox Code Playgroud)
我如何在bash脚本中做这样的事情?