【发布时间】:2021-10-11 12:25:54
【问题描述】:
我有多个 bash 代码文件,每个文件有 3-4 行(如下所示)。
#!/bin/bash
echo "xy"
echo "x.com"
echo "z"
我希望有如下的输出 csv 文件(每个文件的输出在一行 csv 文件中)
|name|sit|alternate_name
|:----|:----:|----|
|x|x.com|z
|y|y.com|f
但我得到的输出像-
||
|:----:|
|x|
|x.com|
|z|
|y|
|y.com|
|f|
我的代码如下-
for i in $(ls script_B*)
do
./$i | awk -F ':' '{OFS=",";print $1,$2,$3}' >> output.csv
done
我是这方面的菜鸟,无法对 awk 做太多研究。 任何帮助表示赞赏。
【问题讨论】:
-
你能用
printf代替print吗?printf("%s %s %s", $1, $2, $3);大概 -
$1等。是单行输入中的字段,而不是前三行输入。 -
您发布的脚本不可能产生您所说的输出,并且您显然已经编写它期望
:-separated 输入并在您的shell 时产生,-separated 输出脚本不会在其输出中打印任何:s,并且您的预期输出是|-separated 并且具有输入或 awk 脚本中不存在的标题行。请edit您对输入/输出/代码的问题相互之间都有意义,因此我们可以为您提供最好的帮助。 -
我看到你接受了你得到的第一个答案,它产生了你期望的输出,从而阻止其他人发布答案,所以如果有更好的答案,你可能永远不会听说它。从一些样本输入中获得预期输出是寻找答案的起点,而不是终点。通常最好在发布问题后几个小时或一天后接受答案,这样您就可以知道可能的答案并选择最好的答案,而不是仅仅假设您得到的第一个答案是最好的答案(它可能在这种情况下,idk)。
-
顺便说一句,
lsis useless.
标签: bash ubuntu awk scripting command-line-interface