删除文件中的第一个和最后一个字符

时间:2019-05-08 00:52:54

标签: bash

我有一个数据文件,我想删除第一个和最后一个字符。有没有简单的方法可以做到这一点?我在网上搜索,但没有找到简单的方法。 谢谢!

3 个答案:

答案 0 :(得分:0)

尝试:

sed -i '1s/.\(.*\)/\1/; $s/\(.*\)./\1/' path/to/file.txt

-i:就地修改文件

1s:仅将替代命令应用于行号1

$s:仅将替代命令应用于最后一行

\( ... \):捕获组,以稍后使用\1

来引用

基本上,这是两个粘贴有;的sed替代命令

编辑:刚刚意识到您说的很简单...不确定这是否简单。

答案 1 :(得分:0)

如果您对awk感到满意,请尝试以下操作。

awk '
prev{
  if(++count==1){
      print substr(prev,2)
  }
  else{
      print prev
  }
  prev=""
}
{
  prev=$0
}
END{
  if(prev){
      print substr(prev,1,length(prev)-1)
  }
}'    Input_file

答案 2 :(得分:0)

使用awk *。使用Lorem\nipsum进行测试(没有结尾的换行符,否则将被删除**):

$ echo -en Lorem\\nipsum | awk -v RS="^$" '{gsub(/^.|.$/,"")}1'
orem
ipsu

解决方案在处理之前将整个输入读入内存,因此可能被认为是不利的。

*使用gawk,awk-20121220和Busybox awk成功进行了测试,但由于mawk失败了。

**“最后一个字符”:

$ echo -e Lorem\\nipsum  # outputs:
Lorem\n
ipsum\n                  # \n is last char but print (well, 1) adds another

为避免这种情况,请改用printf

$ echo -e Lorem\\nipsum | awk -v RS="^$" '{gsub(/^.|.$/,"");printf "%s",$0}'
orem
ipsum$