我试图删除文本文件中每一行的第一个和最后一个字符,并将生成的截断版本保存在新文件中。有谁知道如何使用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