从txt文件的每一行删除第一个和最后一个字符

问题描述:

我需要从文本文件的每一行中删除第一个和最后一个字符。从txt文件的每一行删除第一个和最后一个字符

例如:

输入

$cat file1.txt 
|head1|head2|head3| 
|1|2|3| 
|2|3|4| 

输出:

head1|head2|head3 
1|2|3 
2|3|4 
+0

它总是以管道结束吗? –

+0

| MRC代码|产品|布拉沃次要|周期|当前年份|版本|国家代码|总帐计数|净售出单位 - 每个数量| MU |销售数量 - 每个数量|售出的净单位 - 每月|每月|销售货币| ICP旗|上传ID | | 1757 | 02.100.004 | 47830 | 10 | 2016 | 0 | PR | 60515900 | 1.000 | EA | 0.00 | 0.000 | 0.00 | | Y | 157282 | – smisra3

+0

我已经在 – smisra3

使用SED:

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

该命令将删除第一个'|'只要。不是最后一个 – smisra3

+0

| MRC代码|产品|布拉沃小项|期间|本年度|版本|国家代码|总账计算|净售出单位 - 每个数量| MU |销售数量 - 每个数量|售出的净单位 - 每月|销售金额 - 每月|销售货币| ICP旗|上传ID | | 1757 | 02.100.004 | 47830 | 10 | 2016 | 0 | PR | 60515900 | 1.000 | EA | 0.00 | 0.000 | 0.00 | | Y | 157282 | – smisra3

+0

添加样本数据 – smisra3

一个简单的方法来做到这在一个sed命令:

sed -E 's/^.|.$//g' file 

在行首或行末匹配一个字符,并替换为空。

在基本模式下,请记住,|需要进行转义:

sed 's/^.\|.$//g' file 
+0

这个命令是删除第一个'|'只要。不是最后一个 – smisra3

+0

| MRC代码|产品|布拉沃小项|期间|本年度|版本|国家代码|总账计算|净售出单位 - 每个数量| MU |销售数量 - 每个数量|售出的净单位 - 每月|销售金额 - 每月|销售货币| ICP旗|上传ID | | 1757 | 02.100.004 | 47830 | 10 | 2016 | 0 | PR | 60515900 | 1.000 | EA | 0.00 | 0.000 | 0.00 | | Y | 157282 | – smisra3

+0

添加了smaple数据 – smisra3

如果awk是有帮助的:

awk '{print substr($0,2,length($0)-2)}' file 
head1|head2|head3 
1|2|3 
2|3|4 

@ smisra-能否请您尝试以下,它可以帮助您在一样。

awk '{gsub(/^\||\|$/,X,$0);print}' Input_file