我有以下file.txt:
b.howareyou
hello
goodbye
b.hello
howareyou
b.goodbye
b.test
testb.
testb.test
我想要以下输出:
howareyou
hello
goodbye
hello
howareyou
goodbye
test
testb.
testb.test
我想检查前两个字符是b.
,然后删除这两个字符。
我尝试了一些没有令人满意的结果的解决方案。
答案 0 :(得分:2)
你可以简单地使用下面的sed,
sed 's/^b\.//' file
<强>解释
^
断言我们刚开始。b
匹配文字b
\.
匹配文字点。答案 1 :(得分:1)
Awk
解决方案可以像
$ awk -F. '/^b./{$0=$2} 1' input
howareyou
hello
goodbye
hello
howareyou
goodbye
test
testb.
testb.test
它的作用是什么?
-F.
将字段分隔符设置为.
'/^b./{$0=$2}
如果该行以b.
开头,则将记录$0
设置为$2
.
1
每行都为true,采用默认操作打印整条记录,$0
答案 2 :(得分:1)
这个awk应该可以工作:
awk -F '^b\.' '{print $1$2}' file
howareyou
hello
goodbye
hello
howareyou
goodbye
test
testb.
testb.test
^b\.
,这意味着b仅在第一行开始时跟着点。b.
开头的行将在$2
中显示其余行,而在开头没有b.
的行将在$1
中包含完整行。因此,$1
和$2
中的任何一个都将为空,因此print
$ 1 $ 2 prints the correct output i.e. line without
b。在开始时。