Вы действительно должны использовать правильный анализатор CSV для данных CSV. Вот способ использования ruby
ruby -rcsv -e '
CSV.foreach(ARGV.shift) do |row|
wanted = row.drop(2) # ignore first 2 fields
puts CSV.generate_line(wanted, :force_quotes=>false)
end
' test
net2-thrift-netconf,net.driver.memory,2
net2-thrift-netconf,net.executor.cores,2
net2-thrift-netconf,net.executor.instances,2
net2-thrift-netconf,net.executor.memory,2
net2-thrift-netconf,net.sql.shuffle.partitions,141
net2-thrift-netconf,net.dynamicAllocation.enabled,true
net2-thrift-netconf,net.dynamicAllocation.initialExecutors,2
net2-thrift-netconf,net.dynamicAllocation.minExecutors,2
net2-thrift-netconf,net.dynamicAllocation.maxExecutors,20
или в виде одного -вкладыша
ruby -rcsv -e 'CSV.foreach(ARGV.shift) {|r| puts CSV.generate_line(r.drop(2), :force_quotes=>false)}' test
Использование петли:
mkdir /path_to/new_dir
cd /path_to/top_dir
for i in */*.json; do
cp "$i" "/path_to/new_dir/$(basename "$i".json)_$(dirname "$i").json"
done
$(basename "$i".json)
печатает имя файла без суффикса, например.f1
$(dirname "$i")
печатает имя каталога, например.AA
С Ларри Уоллом perl-rename
(, он же rename
на Debian/Ubuntu и prename
на RHEL/Centos):
perl-rename -n 's:([^/]+)/(.+).json:path/to/new/dir/$2_$1.json:' */*.json
Замените -n
на -v
для фактического выполнения.