我搜索了其他帖子,但没有找到适合我需求的答案。我有一个以空格分隔的文件。我想打印给定行中每个单词的第一个字母。例如:
cat test.txt
This is a test sentence.
Run Code Online (Sandbox Code Playgroud)
使用 sed、awk 或组合,我希望输出为“Tiats”。关于为我指明正确方向的任何建议?
一种可能:
pax> echo 'This is a test sentence.
This is another.' | sed -e 's/$/ /' -e 's/\([^ ]\)[^ ]* /\1/g' -e 's/^ *//'
Tiats
Tia
Run Code Online (Sandbox Code Playgroud)
第一个sed命令只是确保每行末尾有一个空格以简化第二个命令。
第二个命令将从每个单词中去除所有后续字母和尾随空格。这种意义上的单词被定义为任何一组非空格字符。
第三个是添加的内容,以确保删除每行上的前导空格。
sed 的另一个解决方案:
sed 's/\(.\)[^ ]* */\1/g' File
Run Code Online (Sandbox Code Playgroud)
在这里,我们寻找any character( .) 然后是sequence of non-space characters( [^ ]*) 和optional space( *)。用first字符(匹配的字符.)替换此模式。
样本:
$ cat File
This is a test sentence.
Ahggsh Mathsh Dansdjksj
$ sed 's/\(.\)[^ ]* */\1/g' File
Tiats
AMD
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5927 次 |
| 最近记录: |