在遇到第一个空行之前,输出文件行的最佳shell命令是什么?例如:
output these
lines
but do not output anything after the above blank line
(or the blank line itself)
Run Code Online (Sandbox Code Playgroud)
AWK?别的什么?
sed -e '/^$/,$d' <<EOF
this is text
so is this
but not this
or this
EOF
Run Code Online (Sandbox Code Playgroud)
更多awk:
awk -v 'RS=\n\n' '1;{exit}'
Run Code Online (Sandbox Code Playgroud)
更多sed:
sed -n -e '/./p;/./!q'
sed -e '/./!{d;q}'
sed -e '/./!Q' # thanks to Jefromi
Run Code Online (Sandbox Code Playgroud)
直接在shell中怎么样?
while read line; do [ -z "$line" ] && break; echo "$line"; done
Run Code Online (Sandbox Code Playgroud)
(或者printf '%s\n'代替echo,如果你的shell有问题,并且总是处理逃逸.)
使用 sed:
sed '/^$/Q' <file>
Run Code Online (Sandbox Code Playgroud)
编辑: sed 速度更快。请参阅 ephemient 的答案以获得最快的版本。
要在 awk 中执行此操作,您可以使用:
awk '{if ($0 == "") exit; else print}' <file>
Run Code Online (Sandbox Code Playgroud)
请注意,我故意编写此内容是为了避免使用正则表达式。我不知道 awk 的内部优化是什么样的,但我怀疑直接字符串比较会更快。
| 归档时间: |
|
| 查看次数: |
9440 次 |
| 最近记录: |