如果文本太短,请在文本前加上空格
Prepend spaces to text if too short
我有两组文本文件,我需要在它们前面加上空格,直到每行或每段文本的长度为 4 个字符。
第一组文本文件如下所示:
0,
0,
0,
0,
0,
0,
251,
251,
251,
0,
0,
0,
0,
12,
12,
12,
我想在每行的开头添加空格,直到所有的空格都为 4 个字符。
第二组是这样的:
0, 0, 0, 251, 251, 251, 0, 0, 0, 0, 12, 12, 12,
0, 0, 251, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0,
在这种情况下,我需要检查每 2 个逗号之间是否有 4 个字符,如果没有,则在前面加上空格直到有。
我正在寻找一种最好使用 Notepad++ 或 shell 脚本来执行此操作的方法。否则,任何其他好的方法也将不胜感激。谢谢
如果第一个片段在名为 text1
的文件中,第二个片段在名为 text2
的文件中:
对于第一组,你可以这样做:
$ awk '{ printf("%3d,\n", [=10=]) }' text1 # It'd be more modular to get the left-pad whitespace count in awk
0,
0,
0,
0,
0,
0,
251,
251,
251,
0,
0,
0,
0,
12,
12,
12,
第二个,
$ column -t text2
0, 0, 0, 251, 251, 251, 0, 0, 0, 0, 12, 12, 12,
0, 0, 251, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0,
第一个任务可以完成 printf
:
while read line ; do
printf '%4s\n' "$line"
done < lines.txt
与第二种情况类似,但使用数组而不是标量变量
while read -a numbers ; do
printf '%5s' "${numbers[@]}"
echo
done < numbers.txt
试试这个:
for i in $(cat bashdata.txt);do printf "%03d,\n" "${i::-2}";done
它基本上将数据通过管道传输到 printf 并根据您的要求进行格式化
为了简单地追加 space,删除 printf 中的 0:
for i in $(cat bashdata.txt);do printf "%3d,\n" "${i::-2}";done
我有两组文本文件,我需要在它们前面加上空格,直到每行或每段文本的长度为 4 个字符。
第一组文本文件如下所示:
0,
0,
0,
0,
0,
0,
251,
251,
251,
0,
0,
0,
0,
12,
12,
12,
我想在每行的开头添加空格,直到所有的空格都为 4 个字符。
第二组是这样的:
0, 0, 0, 251, 251, 251, 0, 0, 0, 0, 12, 12, 12,
0, 0, 251, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0,
在这种情况下,我需要检查每 2 个逗号之间是否有 4 个字符,如果没有,则在前面加上空格直到有。
我正在寻找一种最好使用 Notepad++ 或 shell 脚本来执行此操作的方法。否则,任何其他好的方法也将不胜感激。谢谢
如果第一个片段在名为 text1
的文件中,第二个片段在名为 text2
的文件中:
对于第一组,你可以这样做:
$ awk '{ printf("%3d,\n", [=10=]) }' text1 # It'd be more modular to get the left-pad whitespace count in awk
0,
0,
0,
0,
0,
0,
251,
251,
251,
0,
0,
0,
0,
12,
12,
12,
第二个,
$ column -t text2
0, 0, 0, 251, 251, 251, 0, 0, 0, 0, 12, 12, 12,
0, 0, 251, 0, 0, 0, 0, 0, 12, 12, 12, 12, 0,
第一个任务可以完成 printf
:
while read line ; do
printf '%4s\n' "$line"
done < lines.txt
与第二种情况类似,但使用数组而不是标量变量
while read -a numbers ; do
printf '%5s' "${numbers[@]}"
echo
done < numbers.txt
试试这个:
for i in $(cat bashdata.txt);do printf "%03d,\n" "${i::-2}";done
它基本上将数据通过管道传输到 printf 并根据您的要求进行格式化
为了简单地追加 space,删除 printf 中的 0:
for i in $(cat bashdata.txt);do printf "%3d,\n" "${i::-2}";done