我正在使用以下内容删除标点符号、制表符,并将文本文件中的大写文本转换为小写。
sed 's/[[:punct:]]//g' $HOME/file.txt | sed $'s/\t//g' | tr '[:upper:]' '[:lower:]'
Run Code Online (Sandbox Code Playgroud)
我是否需要使用这两个单独的sed命令来删除标点符号和制表符,还是可以使用单个sed命令完成?
另外,有人可以解释$第二个sed命令中正在做什么吗?没有它,该命令不会删除选项卡。我查看了手册页,但没有看到任何提到这一点的内容。
输入文件如下所示:
Pochemu oni ne v shkole?
Kto tam?
Otkuda eto moloko?
Chei chai ona p’et?
Kogda vy chitaete?
Kogda ty chitaesh’?
Run Code Online (Sandbox Code Playgroud)
一个sed具有多个-e表达式的单个,可以按如下方式完成FreeBSD sed
sed -e $'s/\t//g' -e "s/[[:punct:]]\+//g" -e 'y/ABCDEFGHIJKLMNOPQRSTUVWXYZ/abcdefghijklmnopqrstuvwxyz/' file
Run Code Online (Sandbox Code Playgroud)
使用y限定符 for,
[2addr]y/string1/string2/
Replace all occurrences of characters in string1 in the pattern
space with the corresponding characters from string2.
Run Code Online (Sandbox Code Playgroud)
如果在GNUsed 中,\L小写转换的量词应该可以正常工作。
sed -e $'s/\t//g' -e "s/[[:punct:]]\+//g" -e "s/./\L&/g"
Run Code Online (Sandbox Code Playgroud)
$''是一种bash引用机制,用于启用ANSI C 类转义序列。
| 归档时间: |
|
| 查看次数: |
8125 次 |
| 最近记录: |