sed/awk到双空间文件

sed/awk到双空间文件,sed,awk,Sed,Awk,我有一个文件有空行,我需要在文件中的两行空格。意思是我需要在两行之间有一个空白行,里面有文本。你能告诉我一个使用awk和/或sed的简单方法吗 sed '/^$/d' fileName | sed G Sai的sed G test.txt也能工作,但我不知道如何工作。试试这个 awk '{print $0 "\n"}' fileName 假设要保持现有空行不变: awk ' prev && $0 {print ""} {print; prev = $0} '

我有一个文件有空行,我需要在文件中的两行空格。意思是我需要在两行之间有一个空白行,里面有文本。你能告诉我一个使用awk和/或sed的简单方法吗

sed '/^$/d' fileName | sed G
Sai的
sed G test.txt也能工作,但我不知道如何工作。

试试这个

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

假设要保持现有空行不变:

awk '
    prev && $0 {print ""}
    {print; prev = $0}
'
只有当前一行和当前行都非空时,第一个测试才为真。

使用
sed

$ sed G input.txt | cat -s
假设:

1.您只想在SED中执行此操作
2.您希望一次完成所有操作
3.某些“空白”行可能包含制表符|空格
4.当前间距不均匀(每行后面有0、1或更多空格)
5.您希望以均匀的双间距结束

试试这个:

#!/bin/sed -f
/^[ \t]*$/d
/^..*$/a\
第一行说: 如果看到“空行”,请将其删除。
第二行写着:如果你看到一个非空行,在它后面加一行。

假设:

1.您想在AWK中完成此操作
2.您希望一次完成所有操作
3.某些“空白”行可能包含制表符|空格
4.当前间距不均匀(每行后面有0、1或更多空格)
5.您希望以均匀的双间距结束

试试这个:

#!/bin/sed -f
/^[ \t]*$/d
/^..*$/a\
awk '$0 !~ /^[ \t]*$/ { print $0, "\n" }' <file>
awk'$0!~/^[\t]*$/{print$0,“\n”}
打破这个,

花括号前的部分表示:仅匹配非空行
花括号内的部分写着:打印这一行,再加上一行(空白)

&
\n
我想应该能与awk一起工作

 # double space a file
 $ awk '1;{print ""}' file
另一种方式

 # or like this
 $ awk 'BEGIN{ORS="\n\n"};1' file

使用

这将使用命令
/^$/d
删除所有空行,并将保留空间的内容(为空)添加到图案空间,中间有一条换行符(
G

一个非常快速的方法是使用

这是如何工作的:

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

您希望如何处理现有的空行?“如何”:在第一次过程中,删除所有空行(假设行不包含空格);在第二步中,您将保留空间(=空行,因为我们没有在其中放入任何内容)的内容附加到每一行,然后打印它。这很好。我需要通过在源代码的每一行之前添加空行来增加两倍的空间,因此只需将
awk'{print'\n“$0}'
改为。
 # or like this
 $ awk 'BEGIN{ORS="\n\n"};1' file
sed '/^$/d;G'
awk 'BEGIN{RS="";FS="\n";ORS=OFS="\n\n"}{$1=$1}1'