【问题标题】:removing the first character in a text file using Sed使用 Sed 删除文本文件中的第一个字符
【发布时间】:2018-04-20 07:43:27
【问题描述】:

我有 100 多个格式为

的巨大文本文件
p 127210 3240293 23423234 3242323423
3242323 23423423 23423234 32423423 

我想求助于

127210 3240293 23423234 3242323423
3242323 23423423 23423234 32423423

我试过了

sed '1 s/^.//' input > output 

但这给了我

 127210 3240293 23423234 3242323423
3242323 23423423 23423234 32423423

即p所在的一个烦人的空间。谁能帮我修改 sed 表达式以获得没有空格的输出?

谢谢

【问题讨论】:

  • sed 's/^. //' input > output ?
  • 您运行的命令也应该删除了第二行开头的3。为什么那条线路没有受到影响?
  • 错过了 1 之前的 s
  • @sam :请将输入格式化为它在文本文件中的显示方式.. 鉴于您的sed 命令和结果,您的输入格式现在没有任何意义..

标签: bash text sed


【解决方案1】:

关注awk 可能对您有所帮助。

awk '!/^[0-9]+/{$1="";$0=$0;$1=$1} 1'   Input_file

解释: 检查条件!/^[0-9]+/ 将检查一行是否不是从数字开始然后执行以下操作,然后我在这里取消第一个字段(因为你不想在此处输出p),然后我将重新安排$0(当前行)并重新安排$1,以便它可以根据您的要求在此处删除初始空间。

输出如下。

127210 3240293 23423234 3242323423
3242323 23423423 23423234 32423423

【讨论】:

    【解决方案2】:
    sed 's/^[[:alpha:]]?//;s/^[[:space:]]*//' infile >outifle
    

    应该这样做。

    【讨论】:

      【解决方案3】:

      sed 's/^. //' foo.txt > foo2.txt

      希望有帮助

      【讨论】:

        【解决方案4】:

        您可以删除行首的非数字字符:

        sed 's/^[^0-9]*//' input > output 
        

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2023-03-30
          • 2018-11-09
          • 1970-01-01
          • 2013-10-24
          • 2016-11-06
          • 2010-09-25
          相关资源
          最近更新 更多