使用字符串分隔符将多行打印为单行



我有一个文件,其中每行都包含一个字符串,如下所示:

Jane
Sally
John
Jim

我想重新格式化我的文件,这样每一行都会合并成一行,并用一个新的字符串分隔每个原始字符串,如下所示:

JaneNNNNNSallyNNNNNJohnNNNNNJim

我可以使用cat或paste将多行格式组合成单行格式,如下所示:

cat file.txt | tr -s 'n' 'NNNNN'
paste -sd 'NNNNN' file.txt

但这些只包括一个"N"作为字符串之间的填充,如下所示:

JaneNSallyNJohnNJim

如何使用多字符字符串填充?也许sed会更有效率?

在每个UNIX盒子上的任何shell中使用任何awk,一次只读取一行到内存中(而不是整个文件(:

$ awk '{printf "%s%s", ors, $0; ors="NNNNN"} END{print ""}' file
JaneNNNNNSallyNNNNNJohnNNNNNJim

使用GNU awk:

awk '$1=$1' OFS='NNNNN' RS='' file

更新Ed的注释如下:

awk '{$1=$1}1' OFS='NNNNN' RS='' file

输出:

JaneNNNSallyNNNNNJohnNNJim

参见:8个强大的Awk内置变量–FS、OFS、RS、ORS、NR、NF、FILENAME、FNR

这可能对你有用(GNU sed(:

sed ':a;N;$!ba;s/n/NNNNN/g' file

将文件拖到内存中,并用NNNNN替换每条换行符。

你当然可以使用:

paste -s file | sed 's/t/NNNNN/g'

或者:

printf "%sNNNNNN" $(<file) | sed 's/NNNNN$/n/'

N。B.最后一个解决方案不适用于一行中的多个单词。

相关内容

  • 没有找到相关文章

最新更新