删除文件中两个字符串匹配项之间的所有内容



我在文件中得到了这段文字.txt:

Osmun.Prez@mail.com:c7lB2m6b@3.a.a:tt_webid_v2=6990226111024612869; tt_webid=6990226111024612869; tt_csrf_token=VD5Nb_TQFH4RKhoJeSe2nzLB; R6kq3TV7=AHkh4PB6AQAA3LIS90nWf2ss0Q7ZTCQjUat4axctvhQY68DdUEz92RwpmVSX|1|0|e9d6917c2fe555827dcf5ee916ba9778079ab2a9; ttwid=1%7CAFodeNF0iZM2fyy-ZeiZ6HTpZoG_MSx6SmXHgGVQ-V4%7C1627538859%7C59ca1e4a56f9f537b55e655a6dabff88e44eb48502b164ed6b4199f5a5263cb0; passport_csrf_token_default=6f7653c3ce946a6ce5444723fb0c509b; passport_csrf_token=6f7653c3ce946a6ce5444723fb0c509b; sid_guard=0483b7d37f4e4bd20ab3046e29724798%7C1627538893%7C5184000%7CMon%2C+27-Sep-2021+06%3A08%3A13+GMT; uid_tt=27b52febe6222486b9f6b6a90ef4ffeace5ea25c09d29a1583be5a1ecf760996; uid_tt_ss=27b52febe6222486b9f6b6a90ef4ffeace5ea25c09d29a1583be5a1ecf760996; sid_tt=0483b7d37f4e4bd20ab3046e29724798; sessionid=0483b7d37f4e4bd20ab3046e29724798; sessionid_ss=0483b7d37f4e4bd20ab3046e29724798; store-idc=maliva; store-country-code=us; odin_tt=294845c8f7711db177f7c549a9f44edb1555031b27a2a485df809cd92c4e544ac0772bf462df5b7a100f6e488c45303cd62df3b6b950f0842520cd887850137b035d990f29cc8b752765e594560c977f; cmpl_token=AgQQAPNSF-RMpbE89z5HYF0_-2PcrxjXf4fZYP5_ZA

如何删除内部string(第一个和唯一的实例)中的所有内容,从文件中的:tt__ZA.txt仅保留使用bash linuxOsmun.Prez@mail.com:c7lB2m6b@3.a.a? 谢谢

像这样:

sed -i "s/:tt_.*//" file.txt

如果要就地编辑文件。如果没有,请卸下-i开关。sed命令的意思是:替换 (s),在每行file.txt中,所有以模式:tt_开头的字符 (.*) 用一个空字符串 (//)。

或命令:

sed -i "s/:tt_.*_ZA//" file.txt

它更符合您的要求,但返回相同的输出。

使用模式替换:

i=$(cat file.txt)
echo "${i/:tt*_ZA}"

假设一般要求是在第 2 个:之后删除所有内容......

示例数据:

$ cat file.txt
Osmun.Prez@mail.com:c7lB2m6b@3.a.a:tt_webid_v ... to end of line
some.one@home.com:B52_m6b@9_az.more.stuff:delete from here ... to end of line

一个sed想法:

$ sed -En 's/^([^:]*:[^:]*).*$/1/p' file.txt
Osmun.Prez@mail.com:c7lB2m6b@3.a.a
some.one@home.com:B52_m6b@9_az.more.stuff

使用awk

awk 'BEGIN{FS=OFS=":"}{print $1,$2}'

使用:作为分隔符,很容易在:tt之前提取列

这会删除文件中从":tt_"到最后一个"_ZA"(包括")的所有字符.txt

Mac_3.2.57$cat file.txt | sed 's/()[:]tt.*_ZA(.*)/12/'
Osmun.Prez@mail.com:c7lB2m6b@3.a.a
Mac_3.2.57$ 

或者如果它总是用冒号分隔的前 2 个值(根据您的示例)

猫文件.txt | 剪切 -F1,2 -D':'

相关内容

  • 没有找到相关文章

最新更新