就是这样。
之前:
1
19:22
abcde
2
19:23
3
19:24
abbff
4
19:25
abbc
之后:
1
19:22
abcde
3
19:24
abbff
4
19:25
abbc
我想删除第2节中没有字母的部分。
我认为我应该使用perl或sed。但是我不知道该怎么办。
我尝试过这样。但这没用。
sed 's/[0-9]\n[0-9]\n%s\n//'
答案 0 :(得分:4)
在Perl中足够简单。秘密在于通过将输入记录分隔符($/
)设置为空字符串,将Perl置于“段落模式”。然后我们仅打印包含字母的记录。
#!/usr/bin/perl
use strict;
use warnings;
# Paragraph mode
local $/ = '';
# Read from STDIN a record (i.e. paragraph) at a time
while (<>) {
# Only print records that include a letter
print if /[a-z]/i;
}
这是作为Unix过滤器编写的,即它从STDIN
读取并写入STDOUT
。因此,如果它位于名为filter
的文件中,则可以这样命名:
$ filter < your_input_file > your_output_file
或者,这是Perl中的简单命令行脚本({-00
是将Perl置于段落模式的命令行选项):
$ perl -00 -ne'print if /[a-z]/' < your_input_file > your_output_file
答案 1 :(得分:3)
sed用于在单独的行上进行s / old / new /,仅此。对于其他任何事情,您都应该使用awk:
$ awk -v RS= -v ORS='\n\n' '/[[:alpha:]]/' file
1
19:22
abcde
3
19:24
abbff
4
19:25
abbc
上面就是这样:
RS=
告诉awk输入记录用空白行分隔。ORS='\n\n'
告诉awk输出记录也必须用空行分隔。/[[:alpha:]]/
搜索并打印包含字母字符的记录。答案 2 :(得分:0)
如果每个段落后面只有一个空白行,则可以使用长// @flow
import React, { Component } from 'react';
import { View, Text } from 'react-native';
import { NavigationScreenProp } from 'react-navigation';
type Props = {
navigate: NavigationScreenProp<{}>
};
type State = {};
class Main extends Component<Props, State> {
...
}
oneliner(三种模式,因此实际上可能不是oneliner):
awk
想法是累积非空行,一旦找到字母字符就设置标志,并在空白输入行上,如果设置了该标志,则刷新整个累积的段落,将accume重置为空字符串,并将flag重置为零。
(请注意,如果输入的最后一行不一定为空,则可能需要添加一个$ echo '1
19:22
abcde
2
19:23
3
19:24
abbff
4
19:25
abbc
' | awk '/[^[:space:]]/ { accum = accum $0 "\n" } /^[[:space:]]*$/ { if(on) print accum $0; on = 0; accum = "" } /[[:alpha:]]/ { on = 1 }'
1
19:22
abcde
3
19:24
abbff
4
19:25
abbc
块,以检查当前是否有未刷新的段落并根据需要刷新它。)
答案 3 :(得分:0)
这可能对您有用(GNU sed):
sed ':a;$!{N;/^$/M!ba};/[[:alpha:]]/!d' file
收集由空行或文件结尾分隔的行,并删除不包含字母字符的最新集合。
这假定文件格式是固定的,如示例中所示。为了更准确地使用:
sed -r ':a;$!{N;/^$/M!ba};/^[1-9][0-9]*\n[0-9]{2}:[0-9]{2}\n[[:alpha:]]+\n?$/!d' file
答案 4 :(得分:0)
类似于Ed Morton的解决方案,但具有以下假设:
本质上,在这些条件下,我们只需要检查第三个字段即可:
awk 'BEGIN{RS=;ORS="\n\n";FS="\n"}(NF<3)' file
或没有BEGIN
的类似内容:
awk -v RS= -v ORS='\n\n' -F '\n' '(NF<3)' file