小编Bab*_*aba的帖子

与 SED 正则表达式的非贪婪匹配(模拟 perl 的 .*?)

我想用sed在第一之间的字符串替换任何AB第一的发生AC(含)用XXX

对于例如,我有这样的字符串(该字符串是仅用于测试):

ssABteAstACABnnACss
Run Code Online (Sandbox Code Playgroud)

我想类似这样的输出:ssXXXABnnACss


我这样做了perl

$ echo 'ssABteAstACABnnACss' | perl -pe 's/AB.*?AC/XXX/'
ssXXXABnnACss
Run Code Online (Sandbox Code Playgroud)

但我想用sed. 以下(使用 Perl 兼容的正则表达式)不起作用:

$ echo 'ssABteAstACABnnACss' | sed -re 's/AB.*?AC/XXX/'
ssXXXss
Run Code Online (Sandbox Code Playgroud)

sed text-processing regular-expression

37
推荐指数
4
解决办法
3万
查看次数

如何将 UTF-8 中的波斯数字转换为 ASCII 中的欧洲数字?

在波斯数字中,??????????相当于0123456789在欧洲数字中。

如何将波斯数字( in UTF-8)转换为 ASCII?

例如,我想??成为21.

bash unicode conversion

16
推荐指数
4
解决办法
3965
查看次数

find -exec 中的子字符串删除

使用时

$ find . -name string~ -exec cp {} FOO \;
Run Code Online (Sandbox Code Playgroud)

有没有办法像我们通常使用 bash 子字符串那样使用{}inFOO删除波浪号字符

例如:

 $ echo ${string%substring}
Run Code Online (Sandbox Code Playgroud)

我的目标是将名为 string~ 的文件复制到 string(与 相反$ find . -name string -exec cp {} {}~ \;)。

bash find

7
推荐指数
1
解决办法
3222
查看次数

iptables 规则不对 scapy 数据包执行任何操作

udp我编写了这条规则,将所有目标 IP 地址更改8.8.8.8dport53:

iptables -t nat -A OUTPUT -p udp -m udp --dport 53 -j DNAT --to-destination 8.8.8.8
Run Code Online (Sandbox Code Playgroud)

当我使用以下规则时,该规则有效:

dig +short iranled.com @4.2.2.4
Run Code Online (Sandbox Code Playgroud)

tcpdump输出是:

04:42:38.023348 IP 192.168.1.2.48984 > 8.8.8.8.53: UDP, length 29
04:42:38.242241 IP 8.8.8.8.53 > 192.168.1.2.48984: UDP, length 45
Run Code Online (Sandbox Code Playgroud)

没关系。

但是当我从 中创建这个数据包时scapyiptables规则没有结果!

sr1(IP(dst="4.2.2.4")/UDP()/DNS(rd=1,qd=DNSQR(qname="iranled.com")))
Run Code Online (Sandbox Code Playgroud)

tcpdump输出是:

04:43:00.442453 IP 192.168.1.2.53 > 4.2.2.4.53: UDP, length 29
04:43:00.855930 IP 4.2.2.4.53 > 192.168.1.2.53: UDP, length 45
Run Code Online (Sandbox Code Playgroud)

为什么数据包没有scapy被更改iptables

更新

#iptables …
Run Code Online (Sandbox Code Playgroud)

iptables scapy

5
推荐指数
0
解决办法
1388
查看次数

如何更改 man 命令的语言?

我想问一下是否可以从终端翻译男人和男人的解释(意大利语)。例如,如果使用:

man cd
Run Code Online (Sandbox Code Playgroud)

我不想用英语运行,而是用意大利语打印。

shell man settings

4
推荐指数
1
解决办法
7286
查看次数

sed regexp 十六进制字符

我有以下字符串

echo -e "a12\x8fb12\x9f" | xxd
0000000: 6131 328f 6231 329f 0a                   a12.b12..
Run Code Online (Sandbox Code Playgroud)

并想删除序列12\x9f12\x8f使用sed.

我可以用这个命令来做

sed -e 's_12\x8f__g' -e 's_12\x9f__g'
Run Code Online (Sandbox Code Playgroud)

但是为什么这个命令不起作用?

sed -e 's_12[\x8f\x9f]__g'
Run Code Online (Sandbox Code Playgroud)

sed regular-expression

3
推荐指数
1
解决办法
5248
查看次数

如何使用隐藏密码运行命令

我需要运行一个 curl 命令来访问另一个人拥有密码的网站。

例如 curl --basic --user myfriendsname:friendspassword http://www.updateinfo.com

我需要一种方法来启动这个脚本而不能看到我朋友的密码。

shell-script curl

2
推荐指数
1
解决办法
1万
查看次数

是否有可以处理通配符的“ls”替代品?

我刚刚了解到 ls 无法处理通配符(ls '*'不起作用),因此 shell 在 ls 被调用之前会这样做。因此,对于使用 unix 工作了 20 年的人来说,ls 的行为可能被认为是合乎逻辑的,对我来说不是,我也不会与 ls 保持一致。

我想要一个目录命令来扫描文件和目录,然后应用通配符过滤器。这样 als cr*就不会列出目录“cron.daily”中的文件。

我知道有ls -d,我做了一个alias lx=ls -lartd. 但后来我意识到,ls -d出于某种秘密原因,没有任何争论是行不通的。

有没有我可以安装的替代品?

ls wildcards shopt

0
推荐指数
1
解决办法
687
查看次数