我正在寻找一种方法来删除之前行到sed匹配的回车。例如,我想在" ["]的任何实例之前删除回车。
示例输入:
MESSAGE: Location
latitude
[-Pi/4,Pi/4]
longitude
[-Pi,Pi]
altitude
[10000,120000]
示例输出:
MESSAGE: Location
latitude [-Pi/4,Pi/4]
longitude [-Pi,Pi]
altitude [10000,120000]
任何使用sed,tr或awk的建议都将受到赞赏。感谢。
答案 0 :(得分:1)
快速搜索会将结果发布到此帖https://stackoverflow.com/a/1252191/722238。
使用该帖子的解决方案解决您的问题,答案如下:
sed ':a;N;$!ba;s/\n\[/ [/g' yourinput.txt
答案 1 :(得分:1)
您可以使用Perl:
use warnings;
use strict;
my $p;
while (<>) {
if (/^\[/) {
chomp $p;
print "$p $_";
undef $p;
} else {
print $p if defined $p;
$p = $_;
}
}
或者从命令行:
perl -lane ' if (/\[/) { print "$p $_"; undef $p} else { print $p if defined $p; $p = $_; }' input
答案 2 :(得分:0)
这可能适合你(GNU sed):
sed '$!N;s/\n\[/ [/;P;D' file
答案 3 :(得分:0)
使用awk:
awk 'NR == 1 {previous = $0}
NR > 1 && $0 ~ "^[[]" {previous = previous $0}
NR > 1 && $0 !~ "^[[]" {print previous; previous = $0}
END{print previous}' your_file.txt
答案 4 :(得分:0)
#!/usr/bin/awk -f
BEGIN {
RS = ""
}
{
gsub(/\n\[/, " [")
}
1