我想找到重复的空格(多个)并用一个空格替换它们。我试过了:
sed -e 's/ []+/ /g' myfile.txt > myfile2.txt
这导致了一个空文件。为什么?以及如何实现我的目标?
在此命令中,我想提取 *.com 或 *.net 之类的字符串,其中 * 不是点。我写了这个:
grep -P -E '^[^.]+\.com$ |^[^.]+\.net$' example.csv
我收到此错误:
grep: conflicting matchers specified
你能澄清一下吗?
我需要提取(或计算)具有两个或多个点的行(在文件中)。行不应该以点开头(如果以点结尾也可以),并且不能有两个点连续(即点都用非点字符分隔)。
输出示例:
a.b.
a.b.com
a.b.c.
a.b.c.com
但不是:
a.com
a..b
a.b.c..d
我做了这个命令:
grep -P '^[^.]+\.([^.]+\.)+[.]+' file.txt | wc -l
但它没有找到任何匹配的行。我该怎么做?
我有一个文件,其中字符串由特殊字符串(不是逗号或分隔符)分隔,例如<vvv>
. 我想检查第一个字段中的所有字符串是否都是唯一的。如果发现同一字段的重复行,我想删除任何重复的行(保留第一次出现)。
例子:
aaa<vvv>bbb<vvv>ccc
xxx<vvv>yyy<vvv>zzz
aaa<vvv>new<vvv>new2
111<vvv>222<vvv>333
我想得到:
aaa<vvv>bbb<vvv>ccc
xxx<vvv>yyy<vvv>zzz
111<vvv>222<vvv>333
我们删除aaa<vvv>new<vvv>new2
是因为aaa
已经出现了。
我不喜欢我们awk
,除非它是唯一的解决方案。它的语法对我来说有点复杂,因为我不熟悉 Linux。
我有这个 shell 代码,它从输入文件中读取主机名行,执行openssl
打印 ssl 证书信息的命令,并在终端中输出结果。
while read x;
do
echo $x;
echo | openssl s_client -servername "$x" -connect "$x":443 -CApath etc/ssl/certs/ca-certificates.crt 2>/dev/null;
done <mylist.txt
这是一个示例输出:
example.com
CONNECTED(00000003)
---
Certificate chain
0 s:/CN=*.vhs.ir
i:/CN=*.vhs.ir
---
Server certificate
-----BEGIN CERTIFICATE-----
MIIC8jCCAdqgAwIBAgIFAgK8lFowDQYJKoZIhvcNAQELBQAwEzERMA8GA1UEAwwI
Ki52aHMuaXIwHhcNMTcwMjA5MTIzMDUwWhcNMTgwMjA5MTIzMDUwWjATMREwDwYD
VQQDDAgqLnZocy5pcjCCASIwDQYJKoZIhvcNAQEBBQADggEPADCCAQoCggEBANvD
aCQtMdGEPLpLAQGrnEpWjWHxolB71dYVXSBCBVAhjeCCBYtRnZSWFZRpNyskBHFc
eUoGRc5FkZgetujWgBjvQrufug1gyzvcENZkmRcjnjRNDLguzkZDJNjRcm4gik47
1Q1eGD6oF50clDH5XyeLtedk+0buYGS5HvVWX4lNKn1bMWpeqU20paLa8G4eqV4z
vNdE534rl9lYKMltD+y+/h+rhZ0Lq2Na+2P2a37NvOg67kkQbIl/SQticGT9Hvzj
SQx7dnJXnLzt5eEq9I63/VxRcKBSiQLFyMCYBxbaf0Ru3X1Z+xLPpJ5wTpkIEUhe
ik75xD92+aDQeKOu5WECAwEAAaNNMEswHQYDVR0OBBYEFGrN5RNdnvrtYiGAqYz/
gnvfYyEAMB8GA1UdIwQYMBaAFGrN5RNdnvrtYiGAqYz/gnvfYyEAMAkGA1UdEwQC
MAAwDQYJKoZIhvcNAQELBQADggEBAEcJuLhZSDYpM+6icKak26A0oYxxLbSX9yJ2
vfnUWcBdV5AC47KwHbkre0VLcB4N0JmXRuxd9Jx/9RZJ5+wOm/vjmpuhqGUKcGEV
nj1bsHqxAZkJ7WI3GD5ebo2iDwkQLGrJYn+EyoI4vKuLNy8G8RO7wO3i58ieRTvm
c7yYb4zmmppPCSLAG4soXGTpWeMYCN3ogQj2r2AWMK8R5P4rNVqpicIIO758GrNX
8RKVP4zMfaBF4hfwehxFJtTd/SoL70UiIYAyktt6U3S7BN+8uImuJYPdjlyc7XwV
0zzlxW+f8BhPEZ8SV9wb6riT0ViU6LV2/qNmxeFJloyiyVFq2Wk=
-----END CERTIFICATE-----
subject=/CN=*.example.com
issuer=/CN=*.example.com
---
No client certificate CA names sent
Peer signing digest: SHA512
Server Temp Key: ECDH, P-256, 256 bits
---
SSL handshake has read 1444 bytes and written 325 bytes
Verification error: certificate has expired
---
New, TLSv1.2, Cipher is ECDHE-RSA-AES128-GCM-SHA256
Server public key is 2048 bit
Secure Renegotiation IS supported
Compression: NONE
Expansion: NONE
No ALPN negotiated
SSL-Session:
Protocol : TLSv1.2
Cipher : ECDHE-RSA-AES128-GCM-SHA256
Session-ID: 03FC884879FB1BC4E471721134E9FE75E08C0C36047D9A0C4570FE6EABA77F8C
Session-ID-ctx:
Master-Key: 38EE0A6AE709E2DCD11B5C47C19713B78FE3959B42498699D604940A9B62DD64D3C3E03918BF25FD5CECA7403EAE590E
PSK identity: None
PSK identity hint: None
SRP username: None
TLS session ticket lifetime hint: 10800 (seconds)
TLS session ticket:
0000 - a4 da 49 66 62 ff aa e7-be bd 76 58 0e d5 fb 45 ..Ifb.....vX...E
0010 - d8 44 c8 2e b1 46 e9 22-6e eb e6 e3 0f eb 8f dc .D...F."n.......
0020 - 8a 57 16 a0 1b 16 36 33-87 2b a3 38 cc 1b 4e c0 .W....63.+.8..N.
0030 - f4 3c 9e d7 82 1d 34 ce-b2 bb 18 95 43 33 74 b7 .<....4.....C3t.
0040 - 24 65 7d 66 94 1e 4f e2-ff 19 e4 71 af bb 51 01 $e}f..O....q..Q.
0050 - f1 fd 55 26 0d 65 39 aa-ef b2 d4 12 84 29 57 96 ..U&.e9......)W.
0060 - 01 2b ae 36 c0 82 f6 e3-4e f9 3e 3b 6d 40 8f ae .+.6....N.>;m@..
0070 - 9a f0 da 95 c2 61 90 42-38 f6 4f 43 78 a5 f4 a5 .....a.B8.OCx...
0080 - 16 27 c8 23 81 fe 98 59-52 87 c1 46 71 3a 34 5d .'.#...YR..Fq:4]
0090 - 6a 1b eb a8 4d 57 19 ea-0b 47 5e 39 8e 07 23 16 j...MW...G^9..#.
00a0 - 34 14 f4 0f 0e 4e 13 55-f8 76 10 64 6c 52 e6 c5 4....N.U.v.dlR..
00b0 - 17 4b 5d 11 89 35 4e ae-97 f1 b7 36 f8 c4 03 56 .K]..5N....6...V
Start Time: 1552057179
Timeout : 7200 (sec)
Verify return code: 10 (certificate has expired)
Extended master secret: no
我想将结果输出到一个文件中,每个主机(x
)用逗号分隔,它的验证结果(即后面的文本Verify return code:
)。
我试图
| grep "Verify return code:"
在 shell 脚本中的命令之后添加行:但没有工作。
如何让 shell 脚本将输出打印为: x,(what come after "Verify return code:"
) ?
例子:
example.com,10(证书已过期)
我在一个目录中有大量文件。这些文件包含任意文本。
我想在该特定文件文本中搜索文件名。为了澄清,我有file1.py.txt
(是的,两个点.py.txt
)并且file2.py.txt
都包含文本。我想搜索里面的字符串的存在和里面@code prefix.file1.py
的file1.py.txt
字符串@code prefix.file2.py
file2.py.txt
如何进行自定义grep
,使其遍历目录中的每个文件,使用该特定文件名在每个文件中搜索字符串?
编辑:
我要查找的输出写在一个单独的文件中,result.txt
其中包含:文件名(如果找到匹配项)、行文本(找到匹配项的位置)
对于我文件中的每一行,如果该行以 / 结尾,我想将其删除。这个怎么做?我的尝试:
sed -e "s/$\/$//" myfile.txt > myfile_noslash.txt
不工作。
我有几个文件,名称不同。他们没有特定的格式。但都是.txt
。例如:
example.txt
flower.txt
abc.com.txt
它们在同一个目录中。我想在所有文件中搜索字符串行,例如<html>
. 然后,如果找到,我想提取找到字符串的行。然后我想将搜索结果保存在 results.txt 文件中,如下所示:
文件名,行
例如,如果在and<html>
中找到字符串,则结果文件将是:example.txt
abc.com.txt
example.txt,<html>[the rest of the line where html is found]
abc.com.txt,<html>[the rest of the line where html is found]
我怎样才能在linux中实现这一点?
您能否指出我在哪里可以找到 Ubuntu 18.04 中的 CA 证书文件?我有一个程序需要指向证书的 CA 目录的路径。验证。
我有一个看起来像这种格式的 CSV 文件:
text1,text2,string1,string2
text3,text3,string3,string2
text4,text5,string1,string2
text6,text6,string6,string7
我想在 column1 和 column2 不相等时提取行。上述示例中的预期结果将是:
text1,text2,string1,string2
text4,text5,string1,string2
当 column1 和 column2 不相等时。我熟悉允许我提取特定列的命令,如下所示以提取第一列:
cat input.csv | cut -d ',' -f1 > output.csv
我有一个包含字符串的文件(test.txt),例如:
name1,6.5.8.12,specs1,version1,['66.55.89.12']
name2,19.13.13.159,specs2,version2,['13.13.173.59'; '14.19.232.42']
name3,141.101.196.40,specs3,version3,['11.01.196.0']
1)我想捕获第 2 列和第 5 列中的所有字符串,这些字符串格式为用点分隔的四个数字,每个数字最多可以是 3 位数字。
2) 第 2 列有一个字符串,但第 5 列有无限个字符串,但它们用分号分隔。
我尝试使用此命令来尝试捕获所有第五列字符串(我仍然需要找出如何捕获第 2 列和第 5 列),但是该命令首先不起作用。它产生了空文件:
cat test.txt | cut -d ',' -f5 | grep -P -o '\d{1-3}\.\d{1-3}\.\d{1-3}\.\d{1-3}' > result.txt
如何捕获第二列和第五列 usng 中的特殊格式字符串grep
。其中字符串是由点分隔的四个数字(从 1 到 3 位)。第 2 列只有一个字符串,但第 5 列有无限个字符串但用分号分隔?
编辑: 预期输出:
6.5.8.12
66.55.89.12
19.13.13.159
13.13.173.59
14.19.232.42
141.101.196.40
11.01.196.0
另请注意,我希望结果排序且唯一sort -u
。我在示例中没有重复的字符串,但如果在我的真实文件中找到,我想避免重复。
我有一个长文件,需要重新处理才能将其输入数据库。该文件的数据采用以下格式:
Error for: 111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for: 198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for: 198.245.175.52,[Errno 104] some text here
我需要重新安排文件是这样的:
Error for,111.222.55.1,[ZXX: Error message] some text (_xxx.c:833)
Error for,198.243.55.25,[ZXX: Error message] some text (_xxx.c:833)
Unexpected error for,198.245.175.52,[Errno 104] some text here
1) 请注意单词后有一个空格for:
2) 正如您在示例中看到的那样,该字符:
可以在一行中出现多次。所以我需要替换之后的第一次出现for:[space]
我想到了sed
搜索和替换。但是不知道如何限制搜索我想要的位置?
我有一个包含以下输入的文件。由点分隔的数字代表地址。地址中的任何数字都可以是一位或多位数字,如下所示:
[112.112.112.112;3.3.3.3;44.44.44.44]
[6.6.6.6;17.17.17.17;88.88.88.88]
我想提取不带分号和括号的每个地址(地址由分号分隔;
),并将每个地址插入新文件的一行中以生成此输出:
112.112.112.112
3.3.3.3
44.44.44.44
6.6.6.6
17.17.17.17
88.88.88.88
作为第一步,我尝试使用 grep 来提取地址,如下所示:
grep -E '\d+\.\d+\.\d+\.\d+' myfile.txt > newfile.txt
但它不打印任何东西。
我有一个逗号分隔的文件,看起来类似于他的格式:
aa.com,1.21.3.4,string1 string2 K=12 K2=23 K3=45 K4=56
bb.com,5.6.7.8,string1 string2 K=66 K2=77 K3=88 K4=99
我想取第三列,其中包含用空格分隔的字符串。我想处理文件以用逗号分隔第三列的前两个字符串,并忽略第 3 列中的其余字符串。前两个字段不包含空格。请注意,第 3 列中的字符串数量并非对所有记录都是固定的。在此示例中,它是由 5 个空格分隔的 6 个字符串。但它可以或多或少。
我所需要的只是取第 3 列的前两个字符串,用逗号分隔它们,然后忽略第 3 列的其余字符串。
aa.com,1.21.3.4,string1,string2
bb.com,5.6.7.8,string1,string2