我想从文件名中提取多个值,并以特定顺序将其分配给* .csv文件(用分号;分隔),在1行上。
不幸的是,它只是将日期放入文件中,而将其他值直接放入外壳中,就像您通过回显命令一样
activemq
aomaap-report
aomaap-stats
5.14.1
5.14.1.rar
1.1.2
1.1.2.war
2.1.1
2.1.1.war
intil10377.echbruedom.local
日期显示在我的* .csv文件中:
Tue Jul 30 10:44:44 CEST 2019
~
~
~
~
~
~
~
~
这是我的实际命令。
ls -1 $path | grep -E ^.*ar$ | grep -Eo '[A-Za-z0-9_]{1,}...\w\w\w\w'; ls -1 $path | sed -n 's/.*-\(.*\)\..*/\1/p'; hostname; date > test4.csv
我希望所有值都排成一行并在文件中排序。像这样:
activemq;5.14.1;intil10377;Jul 30 10:44:44
~
~
~
~
~
有人可以帮我吗?提前谢谢。
答案 0 :(得分:0)
{ ls -1 $path | grep -E ^.*ar$ | grep -Eo '[A-Za-z0-9_]{1,}...\w\w\w\w'; ls -1 $path | sed -n 's/.*-\(.*\)\..*/\1/p'; hostname; date; } | tr '\n' ';' | sed 's/;$/\n/' > test4.csv
{
}
中,以捕获所有命令的输出;
用tr '\n' ';'
替换所有换行符;
用换行符替换最后一个sed 's/;$/\n/'
test4.csv
文件ls -1 $path
看起来不安全,更好ls -1 "$path"
find
比使用ls
更可取。您可以使用一些find "$path" \! -name '*ar' -a -regex "something"
等保存cpu。