sed / awk加倍空间文件

时间:2011-07-01 01:01:16

标签: sed awk

我有一个空白行的文件,我需要将文件中的行加倍。意思是我需要在两行中包含文本的空白行。你能用awk和/或sed给我一个简单的方法吗

10 个答案:

答案 0 :(得分:10)

试试这个

sed '/^$/d' fileName | sed G

答案 1 :(得分:7)

使用sed

$ sed G input.txt | cat -s

答案 2 :(得分:4)

假设:

你想在SED中做到这一点 你想一次性完成所有这一切 3.某些“空白”行可能包含制表符|空格
4.当前间距不均匀(每行后为0,1或更多空格)
你想得到均匀的双倍间距

试试这个:

#!/bin/sed -f
/^[ \t]*$/d
/^..*$/a\

第一行说:                       如果您看到“空行”,请将其删除 第二行说:如果您看到非空行,请在其后面添加一行。

答案 3 :(得分:0)

jcomeau@intrepid:/tmp$ cat test.txt
test
tset 2
test 3
test 4
jcomeau@intrepid:/tmp$ sed 's/\(.*\)/\1\n/' test.txt
test

tset 2

test 3

test 4

Sai的sed G test.txt也有效,但我不知道如何。

答案 4 :(得分:0)

试试这个

awk '{print $0 "\n"}' fileName

答案 5 :(得分:0)

假设您希望保持现有的空行不变:

awk '
    prev && $0 {print ""}
    {print; prev = $0}
'

如果前一行和当前行都非空,则第一次测试将为真。

答案 6 :(得分:0)

假设:

你想在AWK中这样做 你想一次性完成所有这一切 3.某些“空白”行可能包含制表符|空格
4.当前间距不均匀(每行后为0,1或更多空格)
你想最终得到均匀的双倍间距

试试这个:

awk '$0 !~ /^[ \t]*$/ { print $0, "\n" }' <file>

打破这一点,

 大括号前面的部分说:只匹配非空白行  大括号内的部分表示:打印此行并追加一行(空白)

答案 7 :(得分:0)

sed -n 's/.*/&\n/p'

&\n应该可以正常工作

答案 8 :(得分:0)

使用awk:

"Unsupported Media Type"

另一种方式

options.mime = {
  override: {
    'application/graphql': {
      charset: 'UTF-8',
      compressible: true,
      type: 'application/graphql'
    }
  }
};

Awk one-liners

答案 9 :(得分:0)

使用

的快速方法
sed '/^$/d;G'

这将使用命令/^$/d删除所有空行,并将保留空间(为空)的内容附加到模式空间,并在(G)之间添加换行符。

一种快速的方法是使用

awk 'BEGIN{RS="";FS="\n";ORS=OFS="\n\n"}{$1=$1}1'

这是如何工作的:

知道概念记录(默认情况下为几行),您可以通过其记录分隔符RS定义记录。如果将RS的值设置为空字符串,则它将匹配任何空行作为记录分隔符。值ORS是输出记录分隔符。它指出应在两个连续记录之间打印哪个分隔符。设置为两个字符。 但是,当您有多行记录时,这不能解决问题。因此,为此,我们定义了字段(默认为单词)。字段分隔符FS定义为单个字符,以便每个字段代表一行。并且输出字段分隔符定义为两个字符。通过将第一个字段重新分配给自身FS,我们将OFS转换为{$1=$1}最后,语句1{print $0}的简写,它打印当前记录,后跟输出记录分隔符ORS