字符串格式的前导零 - UNIX脚本
所以我正在做的是做一个脚本来读取我的输入文件,并做相应的东西。字符串格式的前导零 - UNIX脚本
我的输入文件被发送到我的格式如下:
ID QTY
xxxxxxxxx,xxx
xxxxxxxxx,xx
xxxxxxxxx,xxx
xxxxxxxxx,xx
xxxxxxxxx,xx
有时候ID只有8因为数字是较小的数字。如果发生这种情况,我需要用前导零来格式化它。另外,我的输入文件有数千行。
我这个至今
echo "${processNew}"
## Read the file line-by-line and output the id.
IFS=','
while read line
do
echo "%09d\n" $line
done < ${processNew}
编辑:您是几乎没有,只需要在你的代码中的小调整,但没有循环:)
这样写,如果想打印两列
awk -F, '{printf "%09d,%d\n" ,$1,$2}' "${processNew}"
这样写,如果想打印只有ID列
awk -F, '{printf "%09d\n" ,$1}' "${processNew}"
使用'awk'是正确的,但每行输入运行'awk'是无稽之谈。你应该丢失shell循环,并简单地将输入文件作为'awk'的双引号参数提供 - 导致:'awk -F,'{printf(“%。9d,%d \ n”,$ 1,$ 2 )}'“$ {processNew}”'其中括号是可选的,'%.9d'的使用等同于'%09d'(虽然有一些不可思议的参数用于选择'%.9d',但它们很微妙,不重要)。您的代码的缩进显示也不太理想。 –
@JonathanLeffler - 你是对的,谢谢你让我知道。编辑答案 – syadav
@sayadav - 我会在哪里将该代码放入我的?你提到失去循环? –
你想格式化“xxxxxxxxx,xxx'还是'xxxxxxxxx',第一部分只? – syadav
格式化一条线就像这个xxxxxxxxx,xxx - 最后3个x是数量,可以自由选择或多或少。 –