如何将带有空格的文本打印为同一行
How to printf text with spaces as same line
我有这样的文本文件
B.10967 2020-09-09 12:01:58.913
B.10966 2020-09-09 12:01:51.670
B.10965 2020-09-09 12:01:24.070
然后我有一些 shell 循环脚本,然后是循环结果中的 printf
pathlastsfcola="/media/LastPatch.txt";
for codes in $(cat $pathlastsfcola | tr -d '\r')
do
printf "${codes}\n"
done;
然后循环的结果是这样的
B.10967
2020-09-09
12:01:58.913
B.10966
2020-09-09
12:01:51.670
B.10965
2020-09-09
12:01:24.070
我的预期结果还是这样
=================================
|code | date time |
=================================
|B.10967|2020-09-09 12:01:58.913|
|B.10966|2020-09-09 12:01:51.670|
|B.10965|2020-09-09 12:01:24.070|
=================================
如何打印每个数据以空格作为分隔符
您需要做的只是引用您的变量,如下所示。所发生的一切只是 $pathlastsfcola
变成了 "$pathlastsfcola"
for codes in "$pathlastsfcola"
do
printf "${codes}\n"
done;
查看此处的解释:
你可以试试这样的
input="/media/LastPatch.txt"
while IFS= read -r line
do
printf "$line\n"
done < "$input"
我在 ubuntu 上试过了,效果很好
我从这里得到了这个例子:https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/
能否请您尝试以下,在所示示例中使用 GNU awk
编写测试。
awk -v header_footer="=================================" '
BEGIN{
OFS="|"
print header_footer ORS "|code | date time |"
}
{
print "",substr([=10=],1,length()),substr([=10=],length()+2),""
}
END{
print header_footer
}' Input_file
输出如下。
=================================
|code | date time |
|B.10967|2020-09-09 12:01:58.913|
|B.10966|2020-09-09 12:01:51.670|
|B.10965|2020-09-09 12:01:24.070|
=================================
我有这样的文本文件
B.10967 2020-09-09 12:01:58.913
B.10966 2020-09-09 12:01:51.670
B.10965 2020-09-09 12:01:24.070
然后我有一些 shell 循环脚本,然后是循环结果中的 printf
pathlastsfcola="/media/LastPatch.txt";
for codes in $(cat $pathlastsfcola | tr -d '\r')
do
printf "${codes}\n"
done;
然后循环的结果是这样的
B.10967
2020-09-09
12:01:58.913
B.10966
2020-09-09
12:01:51.670
B.10965
2020-09-09
12:01:24.070
我的预期结果还是这样
=================================
|code | date time |
=================================
|B.10967|2020-09-09 12:01:58.913|
|B.10966|2020-09-09 12:01:51.670|
|B.10965|2020-09-09 12:01:24.070|
=================================
如何打印每个数据以空格作为分隔符
您需要做的只是引用您的变量,如下所示。所发生的一切只是 $pathlastsfcola
变成了 "$pathlastsfcola"
for codes in "$pathlastsfcola"
do
printf "${codes}\n"
done;
查看此处的解释:
你可以试试这样的
input="/media/LastPatch.txt"
while IFS= read -r line
do
printf "$line\n"
done < "$input"
我在 ubuntu 上试过了,效果很好
我从这里得到了这个例子:https://www.cyberciti.biz/faq/unix-howto-read-line-by-line-from-file/
能否请您尝试以下,在所示示例中使用 GNU awk
编写测试。
awk -v header_footer="=================================" '
BEGIN{
OFS="|"
print header_footer ORS "|code | date time |"
}
{
print "",substr([=10=],1,length()),substr([=10=],length()+2),""
}
END{
print header_footer
}' Input_file
输出如下。
=================================
|code | date time |
|B.10967|2020-09-09 12:01:58.913|
|B.10966|2020-09-09 12:01:51.670|
|B.10965|2020-09-09 12:01:24.070|
=================================