标签: awk

带有 zenity 进度条的 youtube-dl 文件下载进度

如何将 youtube-dl 文件下载进度百分比添加到 zenity 进度条

示例代码(只是一个例子,不是一个有效的)

#!/bin/sh
(
   progress=$(youtube-dl --extract-audio --audio-quality 0 --newline --audio-format mp3 https://www.youtube.com/playlist?list=PL1C815DB73EC2678E)
per=$(awk '{print perc}' <<<$progress)
time=$(awk '{print time}' <<<$progress)
file_no=$(awk '{print file_no}' <<<$progress) #only for playlist, example=Downloading video 1 of 4 

echo "$per" ; sleep 1
echo "# $file_no \n Time Left: $time" ; sleep 1

) |
zenity --progress \
  --title="Download" \
  --text="Downloading..." \
  --percentage=0

if [ "$?" = -1 ] ; then
        zenity --error \
          --text="Download cancelled."
fi
Run Code Online (Sandbox Code Playgroud)

我已使用此代码获取下载进度

youtube-dl --extract-audio --audio-quality 0 …
Run Code Online (Sandbox Code Playgroud)

bash zenity sed awk youtube-dl

5
推荐指数
1
解决办法
6304
查看次数

为什么我的 awk 模式与 nginx -V 的配置参数不匹配?

我正在尝试使用命令行仅获取 Ubuntu 14.04 上已编译 nginx 的配置参数。

跑步/usr/local/nginx/sbin/nginx -V给了我们:

nginx version: nginx/1.8.1
built by gcc 4.8.4 (Ubuntu 4.8.4-2ubuntu1~14.04.1)
built with OpenSSL 1.0.1f 6 Jan 2014
TLS SNI support enabled
configure arguments: --with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module
Run Code Online (Sandbox Code Playgroud)

这是有道理的。

所以现在我想把这条线剪掉:

--with-http_ssl_module --with-http_stub_status_module --add-module=/usr/local/src/nginx-goodies-nginx-sticky-module-ng-c78b7dd79d0d --with-http_sub_module

网上查了一下,好像

/usr/local/nginx/sbin/nginx -V | sed -n -e '/arguments/ s/.*\: *//p'
Run Code Online (Sandbox Code Playgroud)

或者

/usr/local/nginx/sbin/nginx -V | awk -F":" '{print $NF}'
Run Code Online (Sandbox Code Playgroud)

或者

/usr/local/nginx/sbin/nginx -V | egrep -o '\\-\\-'
Run Code Online (Sandbox Code Playgroud)

但他们都只是输出相同的 nginx -V

我理解错了什么?

command-line sed awk text-processing

5
推荐指数
2
解决办法
413
查看次数

为什么括号“][”需要双重转义“\\”以防止shell解释?

我使用 'bash' shell 并在文件上执行下面的 'awk' 命令,文件记录用不同字符的数量分隔,如括号、冒号、括号,如下示例记录

...(field#13[field#14:]]:filed#18[filed#19)[...
Run Code Online (Sandbox Code Playgroud)

但是,当我使用单个转义符 '\' 转义“][”时,awk 命令失败并且我必须双重转义 '\\' 括号才能获得预期的结果,它如何需要使用双转义括号(在 'csh ' 壳是一样的)?

awk -F"[\\[\\]:)(]" '{print $18}' inFile
filed#18
Run Code Online (Sandbox Code Playgroud)

还请注意这一点,我知道我可以像下面这样使用双重转义 '\\' 来逃避它们,我只想知道为什么对于括号这是强制性的?

awk -F"[\\[\\]\\:\\)\\(]" '{print $18}' inFile
filed#18
Run Code Online (Sandbox Code Playgroud)

即使使用信号转义也会发出警告(括号除外),但仍然命令执行并得到结果,谢谢

awk -F '[\\[\\]\:\)\(]' '{print $18}' inFile
awk: warning: escape sequence `\:' treated as plain `:'
awk: warning: escape sequence `\)' treated as plain `)'
awk: warning: escape sequence `\(' treated as plain `('
filed#18
Run Code Online (Sandbox Code Playgroud)

command-line bash awk

5
推荐指数
1
解决办法
2555
查看次数

从另一个文件中命名的文件中删除行

我有以下清单:

NM_000014 3
NM_000015 0
NM_000016 0
NM_000017 0
NM_000018 0
NM_000019 28
NM_000020 0
NM_000021 0
NM_000022 0
NM_000023 0
NM_000024 8
NM_000025 0
NM_000026 0
Run Code Online (Sandbox Code Playgroud)

我还有另一个文件,只有第一列:

NM_000031
NM_000032
NM_000033
NM_000034
NM_000022
NM_000035
NM_000036
NM_000037
NM_000023
NM_000038
NM_000039
NM_000040
NM_000041
NM_000042
Run Code Online (Sandbox Code Playgroud)

我想删除命名为第二个文件的第一个文件的整行。在这种情况下,输出文件将是:

NM_000014 3
NM_000015 0
NM_000016 0
NM_000017 0
NM_000018 0
NM_000019 28
NM_000020 0
NM_000021 0
NM_000024 8
NM_000025 0
NM_000026 0
Run Code Online (Sandbox Code Playgroud)

(删除 NM_000022 和 NM_00023 及其对应的值)

谢谢!!

command-line grep awk text-processing

5
推荐指数
1
解决办法
1627
查看次数

awk 编程:根据模式将大文件拆分为小文件

我有一个大文件 input.dat,如下所示。

kpoint1 :       0.0000    0.0000    0.0000
  band No.  band energies     occupation 
      1     -52.8287      2.00000
      2     -52.7981      2.00000
      3     -52.7981      2.00000
 kpoint2 :       0.0000    0.0000    0.0000
  band No.  band energies     occupation 
      1     -52.8287      2.00000
      2     -52.7981      2.00000
      3     -52.7981      2.00000
Run Code Online (Sandbox Code Playgroud)

我需要将文件拆分为 2 个较小的文件,如下所示

kpoint1.dat

kpoint1 :       0.0000    0.0000    0.0000
  band No.  band energies     occupation 
      1     -52.8287      2.00000
      2     -52.7981      2.00000
      3     -52.7981      2.00000
Run Code Online (Sandbox Code Playgroud)

kpoint2.dat

kpoint1 :       0.0000    0.0000    0.0000
  band No.  band energies     occupation 
      1     -52.8287      2.00000 …
Run Code Online (Sandbox Code Playgroud)

command-line bash awk text-processing

5
推荐指数
1
解决办法
3202
查看次数

有条件地更改csv中的第二列

我有一个 csv 文件,看起来像:

data/train/4/36280.png,four
data/train/2/10317.png,two
data/train/2/57890.png,two
data/train/1/53448.png,one
data/train/8/58233.png,eight
data/train/4/23599.png,four
data/train/2/35051.png,two
data/train/1/12323.png,one
data/train/9/18562.png,nine
data/train/8/46629.png,eight
data/train/7/1746.png,seven
Run Code Online (Sandbox Code Playgroud)

其中第一列是路径,第二列是类。我想有条件地更改第二列。在伪代码中,我想要类似的东西:

If second column "four" change it to the next row's class
Run Code Online (Sandbox Code Playgroud)

到目前为止,我只是想看看我是否可以将 ne 类更改为另一个类,但没有成功:

awk '{ if ($2 == "zero") $2="one"; print $0 }' train.csv > new_file.csv
Run Code Online (Sandbox Code Playgroud)

给我同样的csv。

基本上我想要一个脚本,它给我以下输出 csv:

data/train/4/36280.png,seven
data/train/2/10317.png,four
data/train/2/57890.png,two
data/train/1/53448.png,two
data/train/8/58233.png,one
data/train/4/23599.png,eight
data/train/2/35051.png,four
data/train/1/12323.png,two
data/train/9/18562.png,one
data/train/8/46629.png,nine
data/train/7/1746.png,eight
Run Code Online (Sandbox Code Playgroud)

command-line awk csv text-processing

5
推荐指数
1
解决办法
287
查看次数

无法终止容器:foo:容器 foo 未运行

也许kill是不正确的术语,或者至少我使用不正确。

如何销毁 docker 容器?将它们放入垃圾桶。删除。消除。擦除。

docker container kill $(docker ps -a -q  | awk '{print $1}')
Run Code Online (Sandbox Code Playgroud)

不太有效:

Error response from daemon: Cannot kill container: 06e44d24ba8d: Container 06e44d24ba8d3df83e10a1829f04755cb9053faa68ab3dabccd10c3ee1c80322 is not running
Error response from daemon: Cannot kill container: 22539a069e3b: Container 22539a069e3b8bbbd27b062603a7667857ac1a5e64242004fe7b72411a9cdbca is not running
Error response from daemon: Cannot kill container: 1f7cf43ab398: Container 1f7cf43ab398e6e18416f69fc947b49d9792b1932a4b157f0514f9f6638ca185 is not running
Error response from daemon: Cannot kill container: 7fc8c24ccabe: Container 7fc8c24ccabef04215df9ba7b8c171df6b963942e6e90c92a462cc0ab9d5dcb0 is not running
Run Code Online (Sandbox Code Playgroud)

也可以看看:

/sf/ask/3571091821/

command-line virtualization container awk docker

5
推荐指数
1
解决办法
2万
查看次数

awk 如果找到模式跳过 n 行

如何skip N lines在 awk 中找到模式?

awk '{if ($0~/pattern/) skip N lines; else print $0}'
Run Code Online (Sandbox Code Playgroud)

command-line awk text-processing

5
推荐指数
1
解决办法
624
查看次数

如何将特定单词后面的单词大写

假设我想将“jumped”一词后面的第一个单词大写。下面的例子

原文:

the cow jumped over the moon
Run Code Online (Sandbox Code Playgroud)

修改案文

the cow jumped OVER the moon
Run Code Online (Sandbox Code Playgroud)

我尝试过 awk 和 sed 但似乎无法正确执行。

提前致谢

bash sed awk

5
推荐指数
3
解决办法
946
查看次数

如何从 /var/log/auth.log 获取唯一的 IP 地址?

如何在 /var/log/auth.log 中仅显示唯一的 IP 地址?我的服务器经常受到攻击,虽然我设置了fail2ban,但请求仍然不断出现。所以我开始写信给 ISP 要求关闭帐户,这可能会有所帮助,但是攻击太多了……无论如何,

我使用此命令对今天的点击进行排序:$grep -e 'ruser \| rhost' auth.log | grep -e 'Jun 9' | sort -k 14 | less 其数千次攻击...或暴力尝试。

以下是 auth.log 中的一些 relivent 行:

...
Jun  9 10:08:35 nan sshd[23397]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.109.161.53
Jun  9 10:08:51 nan sshd[23401]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.109.161.53
Jun  9 10:09:07 nan sshd[23428]: pam_unix(sshd:auth): authentication failure; logname= uid=0 euid=0 tty=ssh ruser= rhost=103.109.161.53
Jun  9 10:01:59 nan sshd[23216]: pam_unix(sshd:auth): …
Run Code Online (Sandbox Code Playgroud)

command-line grep awk text-processing

5
推荐指数
1
解决办法
1031
查看次数