微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

使用sed和awk编辑文件中的行

我有一个由空格分隔的几个主机名的文件,然后是一个位置。

host1 C1U5 host2 C11U55 host15 C5U10

我必须编辑主机的文件。 我写了sed / awk行来删除字符,但我的sed行只是返回完整的行。 我需要删除线的Cxx部分。

awk '{print $2}' file | sed -e 's/([Cc][0-9].\w+//g' | tee new new_file

输出应该看起来像

host1 5 host2 55 host15 10

.htaccess重写505错误循环

使用sed来匹配模式并从行中删除文件的末尾

Linux:replace键值对,值包含文件path

在RegEx中使用SED将下划线重新放入数百个CSS文件链接

Rsorting在Linux中与方括号中的文字似乎忽略

表情符号在Linux中没有被python正则expression式检测到

Linux的cpu使用率,然后在算术expression式中使用它

如何在使用正则expression式Windows csv时保留换行符

Express 4中间件不在DigitalOcean服务器上呼叫路由

在CORS中使用正则expression式

这将从第二个字段中删除除最后一个数字之外的所有数据,并且您将获得所需的输出

awk '{ sub(/C[0-9]+w/,"",$2); print $1,$2 }' f1

输出

host1 5 host2 55 host15 10

awk解决方案:

$ awk '{sub(/C[0-9]+[^0-9]+/,$2)}1' file host1 5 host2 55 host15 10

解释正则表达式:

C # C [0-9]+ # followed by 1 or more digits [^0-9]+ # followed by 1 or more non-digits

sed解决方案:你可以使用那个非常相同的正则表达式

$ sed -E 's/C[0-9]+[^0-9]+//' file

Sed解决方案:

ubuntu$ sed -E 's/.*(^[a-zA-Z0-9]+[ ])([C][0-9]*[U])([0-9]+).*/1 3/g' mytext.txt host1 5 host2 55 host15 10

问候!

awk也可以帮助你。

awk -F'C[0-9]+\w' '{print $1,$2}' Input_file

输出如下。

host1 5 host2 55 host15 10

awk '{sub(/C.*U/,"")}1' file host1 5 host2 55 host15 10

怎么了?

sub删除所有正斜杠之间的所有。

从C和。=任何值的单个字符

* =前面的字符为零的零个或多个。

,“”=这里子删除正斜线之间的内容

最后1打印剩下的东西。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐