此代码用于在列中显示str1
的内容:
str1='Name: Robert Jhonson 21
Name: Flex Maxed 23
Name: Thisisaverylongname andlongsurname 44'
IFS=$'\n'
echo "$str1" | column -t
返回:
Name: Robert Jhonson 21
Name: Flex Maxed 23
Name: Thisisaverylongname andlongsurname 44
但我想要做的就是不要在另一栏中分开姓氏。 这是所需的输出:
Name: Robert Jhonson 21
Name: Flex Maxed 23
Name: Thisisaverylongname andlongsurname 44
你有任何想法吗?你能举个例子吗?
答案 0 :(得分:2)
使用awk:
echo "$str1"|awk '{print $1, $2 " " $3, $4}' OFS='\t'
Name: Robert Jhonson 21
Name: Flex Maxed 23
编辑:根据已修改的问题:
echo "$str1"|awk '{print $1, $2 " " $3, $4}' OFS='\t' | column -ts$'\t'
Name: Robert Jhonson 21
Name: Flex Maxed 23
Name: Thisisaverylongname andlongsurname 44
答案 1 :(得分:1)
这是bash
中的一种方式:
$ while read -r title fname lname age; do
echo "$title|$fname $lname|$age"
done <<< "$str1" | column -s'|' -t
Name: Robert Jhonson 21
Name: Flex Maxed 23
Name: Thisisaverylongname andlongsurname 44
在阅读时,您会使用column
的新分隔符来回显该标记。使用-s
column
选项指定新的分隔符。