我有一个文本文件,我只想删除文本文件的第一个字符,有没有办法在shell脚本中执行此操作?
我是编写脚本的新手,所以我真的不知道从哪里开始。我知道大多数人使用的主要命令是" sed"但我只能找到如何使用它作为查找和替换工具。
感谢所有帮助。
答案 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
我希望这对你有所帮助。
[]中