我有一个文件,其中每行都包含一个字符串,如下所示:
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.最后一个解决方案不适用于一行中的多个单词。