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)
这应该也有效。它很好地将每个字符“翻译”为空(删除)。
缺点是,如果它们不是第一个/最后一个字符,它将删除它们。它还会错过您未在 中列出的任何结尾字符()[...
。