使用awk或grep删除文件中某行的第一个字符

时间:2015-06-01 21:19:59

标签: bash awk grep

我试图从一行中删除某个模式,但不是整行本身。一个例子是:

原始

user=dannyBoy

所需

dannyBoy

我有一个充满类似行的文件,所以我想知道如何删除文本的特定部分,无论是从列表中删除前五个字符还是搜索模式“user =”并将其删除。

3 个答案:

答案 0 :(得分:5)

有很多方法可以做到这一点:

cut -d'=' -f2- file

sed 's/^[^=]*//' file

awk -F= '{print $2}' file #if just one = is present
  • cut设置分隔符(-d'=),然后打印从第二个分段开始的所有字段(-f2-)。
  • sed查找从开头到第一个=的所有内容并将其删除。
  • awk=设置为字段分隔符并打印第二个字段。

答案 1 :(得分:0)

以下命令删除前5个字符:

$ echo "user=dannyboy" | cut -c 6-

您也可以在cut -c 6- inputfilename的文件中使用它。

答案 2 :(得分:0)

使用ex

echo user=dannyBoy | ex -s +"norm df=" +%p -cq! /dev/stdin

其中ex等同于基本执行vi命令的vi -e / vim -edf=(删除直到找到=),然后打印缓冲区( %p)。

如果你有这样的多行,那么使用替换会更简单:

ex -s +"%s/^.*=//g" +%p -cq! foo.txt

要编辑文件,请将-cq!更改为-cwq