列中的文本(如表中所示)

时间:2015-07-11 07:46:32

标签: bash shell

我希望有一个带有标签的列和一个带有较长文本的第二列,其中包含换行符,如表格所示。

#title

我试过了:

Label Text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed 
            diam nonumy eirmod tempor invidunt ut labore et dolore magna 
            aliquyam erat, sed diam voluptua. At vero eos et accusam et 
            justo duo dolores et ea rebum. Stet clita kasd gubergren, no 
            sea takimata sanctus est Lorem ipsum dolor sit amet. Lorem 
            ipsum dolor sit amet, consetetur sadipscing elitr, sed diam. 

非常感谢你!

2 个答案:

答案 0 :(得分:2)

很高兴你接受了答案。只是为了那些可能想拥有的人 文本重新包装,以避免过长的行,这种文本处理是 nroff 被发明为 40多年前。它现在是groff包的一部分。这是一个例子:

(echo -e '.na\n.nh'
cat label.txt
echo "'in \\w' $(<label.txt)'u"
cat long.txt ) |
nroff | sed '/^$/d'

Nroff命令以行首开头.'开头。 .na停止对齐,.nh停止连字,'in设置缩进 到字符串的宽度(\w'...'),sed用于删除尾随空白行。 您可以使用.ll 80设置线宽,例如80列。

万岁![/ p>

Label Text: Lorem ipsum dolor sit amet, consetetur sadipscing
            elitr, sed diam nonumy eirmod tempor invidunt ut
            labore et dolore magna aliquyam erat, sed diam
            voluptua. At vero eos et accusam et justo duo dolores
            et ea rebum. Stet clita kasd gubergren, no sea
            takimata sanctus est Lorem ipsum dolor sit amet.
            Lorem ipsum dolor sit amet, consetetur sadipscing
            elitr, sed diam.

答案 1 :(得分:1)

以下bash脚本可能会对您有所帮助:

<强> padded-paste.sh

#!/bin/bash

label=$1
text=$2

# get the number of lines in the text
nline=$(wc -l ${text} | cut -f 1 -d' ')

# get the width of the label
padding=$(awk 'NR==1{ print length }' ${label})

# create a temp directory
tmpdir=$(mktemp -dt "$(basename $0).XXXXXXXXXX")
templabel=${tmpdir}/label.tmp

# print the first line of the label file to a temp file:
awk 'NR==1{ print }' ${label} > ${templabel}

# add blank padding to the temp label file:
for i in $(seq 2 $nline); do
    printf "%*s\n" $padding "" >> ${templabel}
done

# pasted the padded lable to the long text
paste -d' ' ${templabel} ${text}

基于以下输入: 的 label.txt

Label Text:

<强> long.txt

Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam.

您可以像以下一样使用它:

sh padded-paste.sh label.txt long.txt

它会输出:

Label Text: Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam nonumy
            eirmod tempor invidunt ut labore et dolore magna aliquyam erat, sed diam
            voluptua. At vero eos et accusam et justo duo dolores et ea rebum. Stet
            clita kasd gubergren, no sea takimata sanctus est Lorem ipsum dolor sit
            amet. Lorem ipsum dolor sit amet, consetetur sadipscing elitr, sed diam.