Windows 批量等效于 linux 剪切、粘贴和管道到文件
Windows batch equivalent for linux cut, paste and pipe to file
我有一个包含 CSV 的文件夹,例如:
A.csv
pet1;dog
pet2;monkey
B.csv
pet1;cat
pet2;wolf
我现在可以重新格式化 bash (Linux):
for filename in *.csv; do
CSVBody=$(cat $filename | cut -d ";" -f2 | paste -sd ";" -)
echo -e "$CSVBody" >> ./converted/merged.csv
done
得到
merged.csv
dog;monkey
cat;wolf
不幸的是,我已经离开很久了 windows。我如何剪切、粘贴和传输到 bash 中的文件?
并行读取文件的替代方法是将一组文件存储在伪散列中 table
:: Q:\Test19\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion
for /f "tokens=1* delims=;" %%A in (A.csv) do Set "File1[%%A]=%%B"
for /f "tokens=1* delims=;" %%A in (B.csv) do Echo !File1[%%A]!;%%B
> Q:\Test19\SO_57771554.cmd
dog;cat
monkey;wolf
编辑由于 Aacini 的宝贵提示,我做错了。
:: Q:\Test19\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion
for %%F in (*.csv) do (
Set "Line="
for /f "tokens=1* delims=;" %%A in (%%F) do Set "Line=!Line!;%%B"
Echo(!Line:~1!
)
> SO_57771554_2.cmd
dog;monkey
cat;wolf
我有一个包含 CSV 的文件夹,例如:
A.csv
pet1;dog
pet2;monkey
B.csv
pet1;cat
pet2;wolf
我现在可以重新格式化 bash (Linux):
for filename in *.csv; do
CSVBody=$(cat $filename | cut -d ";" -f2 | paste -sd ";" -)
echo -e "$CSVBody" >> ./converted/merged.csv
done
得到
merged.csv
dog;monkey
cat;wolf
不幸的是,我已经离开很久了 windows。我如何剪切、粘贴和传输到 bash 中的文件?
并行读取文件的替代方法是将一组文件存储在伪散列中 table
:: Q:\Test19\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion
for /f "tokens=1* delims=;" %%A in (A.csv) do Set "File1[%%A]=%%B"
for /f "tokens=1* delims=;" %%A in (B.csv) do Echo !File1[%%A]!;%%B
> Q:\Test19\SO_57771554.cmd
dog;cat
monkey;wolf
编辑由于 Aacini 的宝贵提示,我做错了。
:: Q:\Test19\SO_57771554.cmd
@Echo off & Setlocal EnableDelayedExpansion
for %%F in (*.csv) do (
Set "Line="
for /f "tokens=1* delims=;" %%A in (%%F) do Set "Line=!Line!;%%B"
Echo(!Line:~1!
)
> SO_57771554_2.cmd
dog;monkey
cat;wolf