我有一个类似的文件:
!Denver
Line 1
Line 2
Line 3
!New York
Line 1
Line 2
我想要做以下几点 - 基本上用前缀拉文本! (比如!丹佛)并附上文字,少了#34;!"到下一行直到另一行!附带了前进行的新文本
Denver.Line 1
Denver.Line 2
Denver.Line 3
New York.Line 1
New York.Line 2
这是一个更大的剧本的一部分 - 但我希望自己完成其余部分。
我发现以下内容正在审核中:
所以我很快就会得到答案。
谢谢!
答案 0 :(得分:2)
perl -ne 'if (s/^!//) { chomp; $p = $_ } elsif (/\S/) { print "$p.$_" }' < data
答案 1 :(得分:1)
#!/usr/bin/perl
use strict;
use warnings;
my $prefix;
while (<DATA>){ #loop over data line by line
chomp; #remove \n from line
next unless $_; #skip empty lines
if ($_ =~ /^!/){ #check if line starts with !
$prefix = $_; #store line as prefix
next; #move to next line
}
else{
print "$prefix.$_\n"; #if line doesn't start with ! then add prefix
}
}
__DATA__
!Denver
Line 1
Line 2
Line 3
!New York
Line 1
Line 2
答案 2 :(得分:1)
<Behaviors>
<ig:Activation />
<ig:Selection RowSelectType="Multiple" CellClickAction="Row" />
<ig:EditingCore>
<Behaviors>
<ig:CellEditing Enabled="true" >
<EditModeActions EnableF2="true" EnableOnActive="true" MouseClick="Single" />
<ColumnSettings>
<ig:EditingColumnSetting ColumnKey="CustomerID" ReadOnly="true" />
</ColumnSettings>
</ig:CellEditing>
</Behaviors>
</ig:EditingCore>
</Behaviors>
答案 3 :(得分:1)
您已经接受了答案,但这也有效:
sed '/^$/d;/^!/{s/^!//;s/$/\./;h;d;};G;s/\(.*\)\n\(.*\)/\2\1/' filename
答案 4 :(得分:0)
也可以使用awk
:
awk '/^\!/{town=substr($0,2)}!/^$|^\!/{print town "." $0}' file
该镇被!
捕获,如果该行不为空,则会显示。