从shell中删除文本文件的第一个字符

时间:2018-05-30 19:49:48

标签: bash shell sh

我有一个文本文件,我只想删除文本文件的第一个字符,有没有办法在shell脚本中执行此操作?

我是编写脚本的新手,所以我真的不知道从哪里开始。我知道大多数人使用的主要命令是" sed"但我只能找到如何使用它作为查找和替换工具。

感谢所有帮助。

6 个答案:

答案 0 :(得分:4)

您可以使用sed

sed '1s/^.//' startfile > endfile
  • 1s表示匹配行1,处于替代模式(s
  • ^.表示该行的开头(^),匹配任何字符(.
  • 最后一个斜杠之间没有任何内容,这意味着无需替换(删除)

答案 1 :(得分:4)

您可以使用tail命令,告诉它从字符2开始:

tail -c +2 infile > outfile

答案 2 :(得分:2)

其他一些想法:

awk '{print (NR == 1 ? substr($0,2) : $0)}' file

perl -0777 -pe 's/.//' file

perl -pe 's/.// unless $done; $done = 1' file

ed file <<END
1s/.//
w
q
END

答案 3 :(得分:2)

dd允许您指定开始阅读的偏移量:

dd ibs=1 seek=1 if="$input" of="$output"

(其中变量分别设置为指向输入和输出文件)

答案 4 :(得分:1)

您还可以使用0,addr2地址范围来限制第一次替换的替换,例如

sed '0,/./s/^.//' file

这将删除文件的第一个字符,sed表达式将在其范围的末尾 - 有效地仅替换第一个匹配项。

要编辑文件,请使用-i选项,例如

sed -i '0,/./s/^.//' file

或只是将输出重定向到新文件:

sed '0,/./s/^.//' file > newfile

答案 5 :(得分:1)

我曾经使用cut命令来做到这一点。

例如:

cat file|cut -c2-80

仅显示第2列到第80列的字符。

在您的情况下,您可以使用:

cat file|cut -c2-10000 > newfile

我希望这对你有所帮助。

[]中