从命令行中删除每行的第一个和最后一个字符

从命令行中删除每行的第一个和最后一个字符

我试图删除文本文件中每一行的第一个和最后一个字符,并将生成的截断版本保存在新文件中。有谁知道如何使用awk或其他专门针对大文件的Linux程序/命令来有效地做到这一点?

输入.txt

(s,2,4,5,6)
"s,1,5,5,2"
{z,0,4,5,3}
[y,2,4,5,5]
(y,4,4,5,7)
(r,20,4,5,7)
(e,9,4,5,2)

预期输出.txt

s,2,4,5,6
s,1,5,5,2
z,0,4,5,3
y,2,4,5,5
y,4,4,5,79
r,20,4,5,7
e,9,4,5,2

答案1

另一种方法只是为了它:

rev input | cut -c2- | rev | cut -c2-

(注意:对于 GNU cut,它仅适用于仅由一个字节组成的字符(如您的示例中所示))。

答案2

根据您的问题,从输入文件中删除最后一个和第一个单词,如下所示:

sed 's/.$//; s/^.//' inputfile

答案3

一如既往,有很多可能性

sed 's,.\(.*\).$,\1,g' your_file

解释

  • ,-- sed 分隔符也可以是任何其他字符,只要它在需要时进行转义即可。
  • .匹配单个字符
  • \(.*\)- 对剩余部分进行分组,并将其存储以供进一步检索。
  • .再次匹配单个字符
  • $- 行结束
  • \1- 输出与上面的组匹配的文本
  • g全局替换就行了。

答案4

awk如果您愿意,也可以这样做

awk '{print substr($0,2,length()-2);}' input.txt > output.txt

相关内容