pac*_*erg 10 sed awk text-processing
我试图删除文本文件中每一行的第一个和最后一个字符,并将生成的截断版本保存在一个新文件中。有没有人知道如何有效地使用awk或其他专门用于大文件的 linux 程序/命令?
(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)
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
Dra*_*ris 15
另一种方式只是为了它:
rev input | cut -c2- | rev | cut -c2-
Run Code Online (Sandbox Code Playgroud)
(注意:对于 GNU cut,它仅适用于仅由一个字节组成的字符(如您的示例中所示))。
Rah*_*til 11
根据您的问题,从输入文件中删除最后一个和第一个单词,如下所示:
sed 's/.$//; s/^.//' inputfile
Run Code Online (Sandbox Code Playgroud)
小智 5
有很多可能性,一如既往
sed 's,.\(.*\).$,\1,g' your_file
Run Code Online (Sandbox Code Playgroud)
, -- sed 分隔符,也可以是任何其他字符,只要它在任何需要的地方进行转义。. 匹配单个字符\(.*\) - 将剩余部分分组,并将其存储以供进一步检索。. 再次匹配单个字符$ - 行结束\1 - 输出上面组匹配的文本g 全局替换就行了。小智 5
tr -d '()[]{}"' < your_file
Run Code Online (Sandbox Code Playgroud)
这应该也有效。它很好地将每个字符“翻译”为空(删除)。
缺点是,如果它们不是第一个/最后一个字符,它将删除它们。它还会错过您未在 中列出的任何结尾字符()[...。