使用sed只打印每个段落的第一个单词
我想知道我怎么能只打印出每一段的第一个单词和一行。本例中的段落由两个换行符后的文本定义 e、 g 这应该转化为使用sed只打印每个段落的第一个单词,sed,Sed,我想知道我怎么能只打印出每一段的第一个单词和一行。本例中的段落由两个换行符后的文本定义 e、 g 这应该转化为 This This 思考 或 perl-00-lane“打印$F[0]”文件 结果: This This 一种可能的GNU-sed解决方案是: sed -rn ':a;/^ *$/{n;ba};s/( |$).*//p;:b;n;/^ *$/ba;bb' 输出: This This 它将只有空格的行视为空,并理解段落之间的任意数量的空行。还可以正确处理一个单词的段落。这
This
This
思考
或
perl-00-lane“打印$F[0]”文件
结果:
This
This
一种可能的
GNU-sed
解决方案是:
sed -rn ':a;/^ *$/{n;ba};s/( |$).*//p;:b;n;/^ *$/ba;bb'
输出:
This
This
它将只有空格的行视为空,并理解段落之间的任意数量的空行。还可以正确处理一个单词的段落。这可能适合您(GNU-sed):
请注意,如果您希望记录分隔符正好是两个换行符,请将
RS=“\n\n”
用于awk
。不记得如何在cmd行的perl
中执行此操作。也许这里的其他人会知道?
sed -rn ':a;/^ *$/{n;ba};s/( |$).*//p;:b;n;/^ *$/ba;bb'
This
This
sed ':a;$!{N;/\n\s*$/!ba};s/\s.*/\n/' file