使用sed或awk从行的开头删除句点字符

时间:2017-10-30 10:09:42

标签: awk sed replace

希望有人能帮助我。我正在尝试从大型列表中的行的开头删除.句点字符。

示例输入列表

.doubleclick.com
.doubleclick.net
0------------0-------------0.0n-line.info
0----0.0----0.1596.hk

如果尝试过此sed管道sed 's/^.//' < input.txt > output.txt

但是这给了我

doubleclick.com
doubleclick.net
------------0-------------0.0n-line.info

我尝试了其他各种建议,但没有任何效果,因为它剥离了第一个句点,但也来自0.等域名0------------0-------------0.0n-line.info

我只需剥离第一个点而不是别的。

3 个答案:

答案 0 :(得分:3)

.是一个匹配任何角色的元字符,因此您需要将其转义以符合字面

$ # can also use: sed 's/^[.]//' ip.txt
$ sed 's/^\.//' ip.txt
doubleclick.com
doubleclick.net
0------------0-------------0.0n-line.info
0----0.0----0.1596.hk

另见sed manual - Overview of basic regular expression syntax

答案 1 :(得分:3)

标记为

const state = { auth: { authenticated: false } };
const actions = { auth: { handler: () => {}, logout: () => sinon.stub() } };
let store;
beforeEach(() => {
   store = new Vuex.Store({
     state,
     actions,
   });
});

<强>解释

  • awk 'sub(/^\./,"")+1' infile 返回true,如果进行了替换,则会打印记录,如果不在sub(..)以下则打印。

  • 最后
  • +1执行默认操作,即打印当前/记录/行,+1。要知道awk如何工作,请尝试print $0,它将打印所有记录/行,而awk '1' infile则不打印任何内容。除零以外的任何数字都是 true ,这会触发默认行为。

测试结果:

awk '0' infile

答案 2 :(得分:-2)

awk '/^.d/sub(/./,"")' file

doubleclick.com
doubleclick.net
------------0-------------0.0n-line.info
----0.0----0.1596.hk