我有一个由空格分隔的几个主机名的文件,然后是一个位置。
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
答案 0 :(得分:2)
这将删除第二个字段中除最后一个数字之外的所有数字,您应该得到所需的输出。
{{1}}
输出:
{{1}}
答案 1 :(得分:2)
awk 解决方案:
myFunc
解释正则表达式:
$ awk '{sub(/C[0-9]+[^0-9]+/,"",$2)}1' file
host1 5
host2 55
host15 10
sed 解决方案:您可以使用相同的正则表达式
C # C
[0-9]+ # followed by 1 or more digits
[^0-9]+ # followed by 1 or more non-digits
答案 2 :(得分:1)
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
问候!
答案 3 :(得分:1)
关注awk也可以帮助你。
awk -F'C[0-9]+\\w' '{print $1,$2}' Input_file
输出如下。
host1 5
host2 55
host15 10
答案 4 :(得分:-1)
awk '{sub(/C.*U/,"")}1' file
host1 5
host2 55
host15 10
会发生什么?
sub删除两个正斜杠之间的所有内容。
来自C和。=任何值的单个字符
* =前面的字符为零或更多。
,“”=这里sub擦除正斜杠之间的内容。
在结尾处1打印剩下的内容。