sed用于在文本文件中的特定位置插入多行

时间:2015-05-12 12:44:26

标签: bash awk sed

即使我已经检查了相关问题,但我找不到任何解决方案。我认为我的问题非常简单,但我无法解决它缺乏知识的问题。

$statistics dscf parallel
$2e-ints_shell_statistics    file=DSCF-par-stat
$parallel_parameters
   maxtask=4000
   maxdisk=0
   dynamic_fraction=0.300000
$pardft
   memdiv=1

我希望在看到" unix"之后将这些多行添加到文本文件中。字。所以我的代码是这样的。

sed -i "/unix/a \\
$statistics dscf parallel \\
$2e-ints_shell_statistics    file=DSCF-par-stat \\
$parallel_parameters \\
   maxtask=4000 \\
   maxdisk=0 \\
   dynamic_fraction=0.300000 \\
$pardft \\
   memdiv=1 \\
" control

control是我的输出文件。 因为$符号输出缺少这个插入的某些部分,看起来像这样。

$operating system unix
 dscf parallel
e-ints_shell_statistics    file=DSCF-par-stat

   maxtask=4000
   maxdisk=0
   dynamic_fraction=0.300000

   memdiv=1
我有点困惑。我对任何建议持开放态度。它不一定与" sed"命令。

p.s:这是我的第一个问题。 :)

3 个答案:

答案 0 :(得分:1)

使用awk

awk '1;/unix/{print "$statistics dscf parallel\n\
$2e-ints_shell_statistics    file=DSCF-par-stat\n\
$parallel_parameters\n\
maxtask=4000\n\
maxdisk=0\n\
dynamic_fraction=0.300000\n\
$pardft\n\
memdiv=1"}' file

答案 1 :(得分:1)

- (IBAction)loadButton:(id)sender {        
    NSOpenPanel *panel = [NSOpenPanel openPanel];
    if ([panel runModal] == NSFileHandlingPanelOKButton) {
        NSURL *bookUrl  = [panel URL];
        NSString *contents = [NSString stringWithContentsOfURL: bookUrl encoding: NSASCIIStringEncoding error: NULL];
        NSArray *loadedBook = [contents componentsSeparatedByString:@"#NP#"];
        self.textView.value = loadedBook[0];            
    }
}

在sed操作周围使用简单引号,在行尾添加一个简单的sed -i '/unix/ a\ $statistics dscf parallel\ $2e-ints_shell_statistics file=DSCF-par-stat\ $parallel_parameters\ maxtask=4000\ maxdisk=0\ dynamic_fraction=0.300000\ $pardft\ memdiv=1\ ' control 来附加

答案 2 :(得分:-1)

这可能适合你(GNU sed,cat& bash):

cat <<\! | sed -i '/unix/r /dev/stdin' file
$statistics dscf parallel
$2e-ints_shell_statistics    file=DSCF-par-stat
$parallel_parameters
   maxtask=4000
   maxdisk=0
   dynamic_fraction=0.300000
$pardft
   memdiv=1
!