【问题标题】:Delete first character from a text file从文本文件中删除第一个字符
【发布时间】:2017-07-06 01:59:50
【问题描述】:

我有一个文本文件,其中第一个字符 - 我想删除,但我没有得到它的 CR 或 LF 字符,我如何从整个文件中删除文件字符。

【问题讨论】:

标签: bash


【解决方案1】:

使用tail 命令:

tail -c +2 file.txt > newfile.txt

-c 选项表示按字符而不是行计数,+2 表示从字符 2 开始输出尾部。

【讨论】:

  • 哇,这不是做很多重写吗?
  • 您还期望如何做到这一点? Unix 没有提供任何直接移动文件字节的方法。
  • 顺便说一句,这个字符是什么? @Barmar
  • 棘手的是seded 这样的工具在行上运行,而不是在字符上运行。因此,如果文件中的第一个字符是换行符,使用这些工具删除它会更加复杂。
  • @MonaJalal 这就是他们说的他们想要的。
【解决方案2】:

在python中,您可以将文件作为字符串打开,删除第一个字符,然后再次写入文件。

myfile = open("yourfilehere", "r")
mylist = myfile.readlines()
mytext = ""
for items in mylist:
    mytext = mytext + items +"\n"
myfile.close()
mytext = mytext[1:]
myfile = open("yourfilehere", "w")
myfile.write(mytext)

【讨论】:

  • 我在你删除 python 标签之前写了这个。对不起。
【解决方案3】:

如果您要删除的第一个字符仅在第一行,请使用tail 命令。 tail -c +2 将完成这项工作。

<oldFile tail -c +2 >newFile

如果要删除的第一个字符位于文件的每一行,请使用sed 命令。 sed -e 's/^.//' 将完成这项工作。

<oldFile sed -e 's/^.//' >newFile

如果您要删除的第一个字符位于文件的某些行上,并且是特定字符,请再次使用sed 命令。例如,您可能希望从具有前导空格的每一行中删除前导空格。

<oldFile sed -e 's/^ //' >newFile

【讨论】:

    猜你喜欢
    • 2018-11-09
    • 2018-04-20
    • 1970-01-01
    • 2015-12-21
    • 1970-01-01
    • 1970-01-01
    • 2019-02-18
    • 1970-01-01
    相关资源
    最近更新 更多