我有一个压缩文件Data.zip(如果未压缩)包含许多文件:
file_1.txt
file_2.txt
...
...
Run Code Online (Sandbox Code Playgroud)
我想要一个 CLI 命令将其转换为一个新文件夹Data_zipped
,其中包含Data.zip未压缩的单个文件:
Data_zipped/file_1.zip
Data_zipped/file_2.zip
...
...
Run Code Online (Sandbox Code Playgroud)
但诀窍是它Data.zip 包含如此多的文件(而且它们总体上如此之大),以至于我无法先解压缩 Data.zip,然后一举压缩其中的单个文件:这一切都必须“即时”发生:
对于所有文件 Data.zip/
name_of_that_file.zipData_zipped如何使用 CLI 做到这一点?
我修改了@George 的超清晰脚本,以帮助更好地解释文件夹结构:
file_1.txt
file_2.txt
...
...
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我得到(我使用一个只有几个文件的令牌 Data.zip,但你明白了):
./GU_script.sh Data.zip
Archive: Data.zip
Length Date Time Name
--------- ---------- ----- ----
0 2017-11-21 22:58 Data/
120166309 2017-11-21 14:58 Data/Level1_file.csv
120887829 2017-11-21 14:58 Data/Level1_other_file.csv
163772796 2017-11-21 14:59 Data/Level1_yet_other_file.csv
193519556 2017-11-21 14:59 Data/Level1_here_is_another_file.csv
153798779 2017-11-21 14:59 Data/Level1_so_many_files.csv …Run Code Online (Sandbox Code Playgroud) 我在 Ubuntu 上使用 Visual Studio Code。一个大问题是我不知道如何将 virtualenv 附加到文件。所以,我打开文件。在左下角,我看到了系统 python 可执行文件的默认路径:
当我点击它时,顶部中间框会显示一个包含两条路径的列表(两者都是默认的系统python)。
我试图设置python.venvPath(在右侧窗口中为绿色)。但它不起作用。
我的问题是:如何将 virtualenv 分配给项目,以便每当我打开该文件时,它都会使用该 venv?
命令
time ./myprog
Run Code Online (Sandbox Code Playgroud)
在屏幕上显示运行 myprog 所花费的时间。现在我想将此信息写入文本文件。
如何?
考虑这个文件:
#!/usr/bin/env bash
cat > example_file.txt <<EOL
group, value
1, 3.21
1, 3.42
1, 3.5
2, 4.1
2, 4.2
EOL
Run Code Online (Sandbox Code Playgroud)
在下面的脚本中,我根据第一列中的值(第一列中的值已经排序)对这个文件的行进行分组,并将每个组打印到一个单独的 txt 文件中:
var=$(echo 'example_file.txt')
var2=$(echo $var|sed "s/.txt//g")
mkdir -p output
cat $var | awk -v varn="$var2" -F, 'FNR == 1 {header = $0;next} !seen[$1]++ { print header > ("output/"varn"_"$1".txt") }{print > ("output/"varn"_"$1".txt");}'
Run Code Online (Sandbox Code Playgroud)
题
如何将结果打印到压缩流"output/"varn"_"$1".gz"(而不是未压缩的 txt 文件"output/"varn"_"$1".txt")?
(因此所需的输出与现在脚本生成的输出相同,只有我希望输出的文件被压缩并保存到.txt.gz而不是像代码现在那样的纯文本文件)。
(我尝试gzip >在{print}块内使用但无济于事:(
(PS 我有点像 awk 菜鸟,所以这个问题可能是一个非常愚蠢的问题。)
考虑这个数据:
#!/usr/bin/env bash
cat > example_file.txt <<EOL
group, value, price
1, 3.21, 3.21
1, 3.42, 4.11
1, 3.5, 1.22
2, 4.1, 9.2
2, 4.2, 2.11
EOL
Run Code Online (Sandbox Code Playgroud)
我想将“值”列移到前面:
value, price, group
3.21, 3.21, 1
3.42, 4.11, 1
3.5, 1.22, 1
4.1, 9.2, 2
4.2, 2.11, 2
Run Code Online (Sandbox Code Playgroud)
问题是:列的顺序(甚至列的数量或许多列的名称——除了始终存在的“值”)因文件而异。所以我必须按名称(而不是顺序)选择值列。
我怎样才能做到这一点?
以下几行将essay_i.txt 的内容附加到essay1.txt 的末尾;
touch essay1.txt
for (( i = 1 ; i <= 10 ; i++ )); do
sed '2p' essay_"${i}".txt >> essay1.txt
done
Run Code Online (Sandbox Code Playgroud)
我应该如何更改它以便不复制每个 essay_i.txt 的第一行(即只复制第 2 行->结束)?
我有一个目录,其中充满了许多没有扩展名的文件,这些文件是通过调用 wget 放置在那里的。
我想使用 html2text 将所有这些文件转换为纯文本文件。
换句话说,如何运行这个命令
html2text listbaba=A > listbaba=A.txt
Run Code Online (Sandbox Code Playgroud)
但不仅仅是listbaba=A当前目录中没有扩展名的所有文件。在互联网上,有人找到这样一个例子:
for file in *.html; do html2text "$file" > "$file.txt"; done
Run Code Online (Sandbox Code Playgroud)
但问题是我必须替换什么才能"*.html"对所有没有扩展名的文件执行此操作~
bash ×5
command-line ×5
awk ×1
conversion ×1
csv ×1
html ×1
python ×1
sed ×1
time-command ×1
virtualenv ×1
zip ×1