AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / user-186444

Christopher Karsten's questions

Martin Hope
Christopher Karsten
Asked: 2024-12-15 23:39:08 +0800 CST

在同一行上打印特殊字符之间的文本并删除开始和结束的空格

  • 8

我正在尝试实现在特殊字符之间获取文本。您可以按照下面的步骤了解我想要实现的目标。我有必要的命令来执行此操作,但我正在寻找一种更有效的方法,以防某些条件可能根据结果而改变。

下面是文本 On-Line (Prim) 的示例。我想提取“--”第一次和第二次出现之间的任何文本。

所以我在“VAL1”变量中有下面的文本

IBM Informix Dynamic Server Version 14.10.FC10XA -- On-Line (Prim) -- Up 77 days 23:08:31 -- 130337920 Kbytes

因此目前我正在使用以下内容:

echo "$VAL1" | awk -F'--' '$1 ~ /Version/ {print $2}'

以上代码给出以下输出:

 On-Line (Prim)

但是,您看不到行尾必须有空格,但开头非常明显。我想确保只打印“--”之间的单词,而不打印“--”内句子前后的任何空格。

因此我尝试使用下面的方法,对我来说似乎不错:

echo "$VAL1" | awk -F'--' '$1 ~ /Version/ {print $2}' | sed 's/^ //g' | sed 's/ *$//'

输出:

On-Line (Prim)

我想知道是否有更好、更简单、更充分的方法来做到这一点?

awk
  • 4 个回答
  • 279 Views
Martin Hope
Christopher Karsten
Asked: 2024-12-12 18:47:23 +0800 CST

将竖线分隔的列数据转换为电子邮件的 HTML 表格格式

  • 8

我正在尝试将分隔数据格式转换为 html 列表输出以用于电子邮件打印,但我不确定如何使用管道分隔符作为 HTML 表格格式的分隔符。

如果使用空格作为分隔符,则可以使用以下选项,但在此示例中,我使用的是管道符 (|)。

awk ' BEGIN {
print "To: '[email protected]'"
#print "MIME-Version: 1.0"
print "Content-Type: text/html"
print "Subject: This is a test email"
print "<html><body><table border=1 cellspacing=0 cellpadding=3>"
print "<tr>"
print "<td>SID</td>";
print "<td>PID</td>";
print "<td>Username</td>";
print "<td>Database</td>";
print "<td>Hostname</td>";
print "<td>Program</td>";
print "<td>Connected</td>";
print "<td>Idle Time</td>";
print "<td>Query Time</td>";
print "<td>EST COST</td>";
print "<td>SEQ SCAN</td>";
print "<td>Query</td>";
print "</tr>"
} {
print "<tr>"
print "<td>"$1"</td>";
print "<td>"$2"</td>";
print "<td>"$3"</td>";
print "<td>"$4"</td>";
print "<td>"$5"</td>";
print "<td>"$6"</td>";
print "<td>"$7"</td>";
print "<td>"$8"</td>";
print "<td>"$9"</td>";
print "<td>"$10"</td>";
print "<td>"$11"</td>";
print "<td>"$12"</td>";
print "</tr>"
} END {
print "</table></body></html>"
} ' /home/test/test.unl | sendmail -t

test.unl 文件内容如下:

15422216|-1|dwhvo|test|pd244zax.test.corp|N/A|    10:56:53|    -0:00:30|10:57:22|1045127|1|SELECT sba_sub_aux.sba_subscriber_id, sba_sub_aux.sba_id_number, sba_sub_aux.sba_matchcode, sba_sub_aux.sba_marketing, sba_su|

我希望通过电子邮件以表格形式实现以下内容。

在此处输入图片描述

awk
  • 4 个回答
  • 447 Views
Martin Hope
Christopher Karsten
Asked: 2022-12-30 12:07:46 +0800 CST

如何在获得 2 次差异时将秒数转换为 hh:mm:ss.ms

  • 5

我执行了一个计算,将当前时间戳转换为毫秒以及使用 perl 命令,如下所示:

perl -MTime::HiRes=time -MPOSIX=strftime -e '
$now = int(time() * 1000);
printf "%s.%03d\n", strftime("%H:%M:%S", localtime(int($now/1000))), ($now % 1000);'

从上面我想将输出转换为秒,我可以使用下面的例子来实现:

echo "21:48:40.596" | awk -F: '{ if (NF == 1) {print $NF} else if (NF == 2) {print $1 * 60 + $2} else if (NF==3) {OFMT = "%2.3f"; print $1 * 3600 + $2 * 60 + $3 } }'

使用上面的命令,如果我比较以秒为单位的读数,我可以使用下面的命令来获得以秒为单位的 2 个值之间的差异,同时保持毫秒:

例子:

DIFF_SEC=$(echo "78522.896 - 78520.596" | bc -l | awk '{printf("%.3f\n", $1)}')

输出:

echo $DIFF_SEC
2.300

我想从上面知道如何计算上面命令之间的差异 hh:mm:ss.milseconds

我设法弄清楚了以下内容,但是没有显示毫秒数:

DIFF=`printf '%02dh:%02dm:%02ds.%03d\n' $((DIFF_SEC/3600)) $((DIFF_SEC%3600/60)) $((DIFF_SEC%60))`

输出:

echo "$DIFF"
00h:00m:02s.000

我期待的是:

00h:00m:02s.300
awk
  • 3 个回答
  • 75 Views
Martin Hope
Christopher Karsten
Asked: 2022-11-17 10:47:48 +0800 CST

使用 awk if 在第一列标准上打印整行

  • 5

我有一个名为 test_data.txt 的文件,文件中的内容如下:

20:20:20 test1
20:21:21 test2
20:21:49 test3
20:21:57 test4
20:21:57 test5
20:21:57 test6
20:22:57 test7
20:25:59 test8
20:25:59 test9
20:25:59 test10
20:25:59 test11
20:29:03 test12
20:29:04 test13
20:29:31 test14

例如,第一列是我要搜索的内容。第一列显示时:分:秒 (HH:MM:SS)。如果满足小时和分钟,我想使用变量来提取整条线的数据:

var1=20:20
var2=20:22
cat test_data.txt | awk '{if ($1 == "'"$var1"'" || $1 == "'"$var2"'") print $0;}'

预期输出:

20:20:20 test1
20:22:57 test7

我正在使用的 awk 显然不起作用,因为我不想按秒搜索。下面的方法确实有效,但我如何在示例中使用多个变量:

var1=20:20
var2=20:22
ERE='^'$var1':[[:digit:]]+$' <test_data.txt awk '$1 ~ ENVIRON["ERE"]'

我不确定上面是否可以在同一个命令中处理多个变量

上述命令的输出:

20:20:20 test1
awk
  • 2 个回答
  • 21 Views
Martin Hope
Christopher Karsten
Asked: 2022-10-25 22:52:19 +0800 CST

如何在 awk if 语句中使用星号

  • 5

我有一个场景,我需要打印一行,但是如果使用 awk 来搜索一个数字,则会附加一个带有更多数字的双冒号:

请参见下面的示例:

test1 test2 37:375003 test3 test4
test1 test2 38:375004 test3 test4
test1 test2 39:375005 test3 test4
test1 test2 40:375006 test3 test4
test1 test2 41:375007 test3 test4

我想要实现的是使用如下命令:

cat test_out.txt | awk "{if ($3 == 37~/\:*/ ) print $0;}"

以上应该给我以下行:

test1 test2 37:375003 test3 test4

得到以下语法错误:

Syntax Error The source line is 1.
The error context is
             {if ( >>>  == <<<
awk: 0602-502 The statement cannot be correctly parsed. The source line is 1.
awk
  • 2 个回答
  • 53 Views
Martin Hope
Christopher Karsten
Asked: 2022-02-22 10:51:18 +0800 CST

按字母和数字顺序对绝对目录路径进行排序

  • 0

我很难在线找到使用字母和数字对绝对目录路径进行排序的解决方案。

示例是名为 test.txt 的文件中的以下内容

 /opt/informix/data/dcdwhdev/rootdbs.2
 /opt/informix/data/dcdwhdev/db1.1
 /opt/informix/data/dcdwhdev/db1.10
 /opt/informix/data/dcdwhdev/db1.11
 /opt/informix/data/dcdwhdev/rootdbs.1
 /opt/informix/data/dcdwhdev/db1.12
 /opt/informix/data/dcdwhdev/db1.19
 /opt/informix/data/dcdwhdev/db1.2
 /opt/informix/data/dcdwhdev/db1.21
 /opt/informix/data/dcdwhdev/db1.22
 /opt/informix/data/dcdwhdev/db1.23
 /opt/informix/data/dcdwhdev/db1.3
 /opt/informix/data/dcdwhdev/db1.31
 /opt/informix/data/dcdwhdev/db1.32
 /opt/informix/data/dcdwhdev/db1.33

以下是我想要实现的目标:

/opt/informix/data/dcdwhdev/db1.1
/opt/informix/data/dcdwhdev/db1.2
/opt/informix/data/dcdwhdev/db1.3
/opt/informix/data/dcdwhdev/db1.10
/opt/informix/data/dcdwhdev/db1.11
/opt/informix/data/dcdwhdev/db1.12
/opt/informix/data/dcdwhdev/db1.19
/opt/informix/data/dcdwhdev/db1.21
/opt/informix/data/dcdwhdev/db1.22
/opt/informix/data/dcdwhdev/db1.23
/opt/informix/data/dcdwhdev/db1.31
/opt/informix/data/dcdwhdev/db1.32
/opt/informix/data/dcdwhdev/db1.33
/opt/informix/data/dcdwhdev/rootdbs.1
/opt/informix/data/dcdwhdev/rootdbs.2
aix sort
  • 2 个回答
  • 66 Views
Martin Hope
Christopher Karsten
Asked: 2020-01-22 00:41:46 +0800 CST

awk 匹配参数上方的所有行

  • 0

我有一个名为 test.out 的文件,其中包含以下几行:

-rw-rw----    1 informix informix    9117025 Jan 21 05:22 shop4_0_Log0000331875.Z
-rw-rw----    1 informix informix    8897981 Jan 21 05:24 shop4_0_Log0000331876.Z
-rw-rw----    1 informix informix    9325351 Jan 21 05:31 shop4_0_Log0000331877.Z
-rw-rw----    1 informix informix    9645109 Jan 21 05:34 shop4_0_Log0000331878.Z
-rw-rw----    1 informix informix    9950581 Jan 21 05:40 shop4_0_Log0000331879.Z
-rw-rw----    1 informix informix   10655940 Jan 21 05:59 shop4_0_Log0000331880.Z
-rw-rw----    1 informix informix   10832325 Jan 21 06:39 shop4_0_Log0000331881.Z
-rw-rw----    1 informix informix    8521443 Jan 21 07:42 shop4_0_Log0000331882.Z
-rw-rw----    1 informix informix   10283566 Jan 21 08:02 shop4_0_Log0000331883.Z
-rw-rw----    1 informix informix   10633957 Jan 21 08:51 shop4_0_Log0000331884.Z

我想打印 grep 值 331881 参数以上的所有行:

我想要的结果必须如下所示:

-rw-rw----    1 informix informix    9117025 Jan 21 05:22 shop4_0_Log0000331875.Z
-rw-rw----    1 informix informix    8897981 Jan 21 05:24 shop4_0_Log0000331876.Z
-rw-rw----    1 informix informix    9325351 Jan 21 05:31 shop4_0_Log0000331877.Z
-rw-rw----    1 informix informix    9645109 Jan 21 05:34 shop4_0_Log0000331878.Z
-rw-rw----    1 informix informix    9950581 Jan 21 05:40 shop4_0_Log0000331879.Z
-rw-rw----    1 informix informix   10655940 Jan 21 05:59 shop4_0_Log0000331880.Z

使用下面的命令,我可以指定上面要打印的行数:

grep -n 331881 test.out | cut -d':' -f1 |  xargs  -n1 -I % awk "NR<=%+0 && NR>=%-1" test.out | sed '$d'

在这种情况下,上面的命令将只打印指定数量的行 1 行,但我想将上面的内容更改为打印 grepped 行以上的所有内容。我正在努力寻找解决问题的方法或更简单的方法。

awk text-processing
  • 5 个回答
  • 103 Views
Martin Hope
Christopher Karsten
Asked: 2019-11-13 02:18:12 +0800 CST

在 awk 中执行计算时舍入第二位小数

  • 0

这是一个简单的例子:

echo "36974820" | awk '{print "("$1 " KB)" " (" $1/1024 " MB)" " (" $1/1024/1024 " GB)\n"}'

输出:

(36974820 KB) (36108.2 MB) (35.2619 GB)

我想要的如下:

(36974820 KB) (36108.2 MB) (35.26 GB)

我知道可以单独使用以下内容:

echo "5.5434" | awk '{printf "%.2f\n", $1}'

输出是:

5.54

我想将上面的内容与我的 awk 结合起来执行计算以四舍五入到小数点后第二位。

ksh
  • 1 个回答
  • 65 Views
Martin Hope
Christopher Karsten
Asked: 2019-10-07 06:33:47 +0800 CST

如何grep包括特殊字符的整数?

  • -1

我有一个名为 test 的文件,其中包含以下几行:

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
10. Mark Ronson - Find U Again (feat. Camila Cabello).mp3
11.  Mabel  -  Mad Love.mp3
12. Sigala & Becky Hill - Wish You Well.mp3
13. CamelPhat & Jake Bugg - Be Someone.mp3
14. Jess Glynne & Jax Jones - One Touch.mp3
15. Zara Larsson - Don't Worry Bout Me.mp3
16. Pink Ft, Cash Cash - Can We Pretend.mp3
17.  Jax Jones & Martin Solveig & Madison Beer  -  All Day And Night (Jax Jones & Martin Solveig Present Europa).mp3
18. Martin Garrix - Summer Days (feat. Macklemore & Patrick Stump of Fall Out Boy).mp3
19. Little Mix - Bounce Back.mp3

我想要使​​用 1. 代表歌曲名称的第一列的 grep。我正在使用的命令是:

#cat test | grep -w "1."

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
10. Mark Ronson - Find U Again (feat. Camila Cabello).mp3
11.  Mabel  -  Mad Love.mp3
12. Sigala & Becky Hill - Wish You Well.mp3
13. CamelPhat & Jake Bugg - Be Someone.mp3
14. Jess Glynne & Jax Jones - One Touch.mp3
15. Zara Larsson - Don't Worry Bout Me.mp3
16. Pink Ft, Cash Cash - Can We Pretend.mp3
17.  Jax Jones & Martin Solveig & Madison Beer  -  All Day And Night (Jax Jones & Martin Solveig Present Europa).mp3
18. Martin Garrix - Summer Days (feat. Macklemore & Patrick Stump of Fall Out Boy).mp3
19. Little Mix - Bounce Back.mp3

一切似乎都被抓住了。但我想只看到以下内容:

1. Lil Nas X Ft, Billy Ray Cyrus - Old Town Road (Remix).mp3
grep
  • 1 个回答
  • 39 Views
Martin Hope
Christopher Karsten
Asked: 2019-07-20 00:27:32 +0800 CST

for 循环中的 cat 文件在循环中保持 1 行上的数据格式

  • 0

我有一个名为 index.out 的文件

下面的内容在 index.out 文件中:

informix abc_aseld_idx1
informix abc_aseld_idx2
informix abc_aseld_idx3
informix abc_aseld_idx4
informix abc_aseld_idx5

我想创建一个 for 循环,可以一次拉出每一行,保持格式。我正在使用以下 for 循环命令:

for i in `
cat indexes.out`
do
echo "$i"
done

输出为:

informix
abc_aseld_idx1
informix
abc_aseld_idx2
informix
abc_aseld_idx3
informix
abc_aseld_idx4
informix
abc_aseld_idx5
informix

我想看到与文件相同的输出,因为我想在稍后使用 awk $1 和 $2 处理循环中的两列:

informix abc_aseld_idx1
informix abc_aseld_idx2
informix abc_aseld_idx3
informix abc_aseld_idx4
informix abc_aseld_idx5

一旦进入循环,我想使用每一行单独过滤特定的列。

aix ksh
  • 2 个回答
  • 1547 Views

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    模块 i915 可能缺少固件 /lib/firmware/i915/*

    • 3 个回答
  • Marko Smith

    无法获取 jessie backports 存储库

    • 4 个回答
  • Marko Smith

    如何将 GPG 私钥和公钥导出到文件

    • 4 个回答
  • Marko Smith

    我们如何运行存储在变量中的命令?

    • 5 个回答
  • Marko Smith

    如何配置 systemd-resolved 和 systemd-networkd 以使用本地 DNS 服务器来解析本地域和远程 DNS 服务器来解析远程域?

    • 3 个回答
  • Marko Smith

    dist-upgrade 后 Kali Linux 中的 apt-get update 错误 [重复]

    • 2 个回答
  • Marko Smith

    如何从 systemctl 服务日志中查看最新的 x 行

    • 5 个回答
  • Marko Smith

    Nano - 跳转到文件末尾

    • 8 个回答
  • Marko Smith

    grub 错误:你需要先加载内核

    • 4 个回答
  • Marko Smith

    如何下载软件包而不是使用 apt-get 命令安装它?

    • 7 个回答
  • Martin Hope
    user12345 无法获取 jessie backports 存储库 2019-03-27 04:39:28 +0800 CST
  • Martin Hope
    Carl 为什么大多数 systemd 示例都包含 WantedBy=multi-user.target? 2019-03-15 11:49:25 +0800 CST
  • Martin Hope
    rocky 如何将 GPG 私钥和公钥导出到文件 2018-11-16 05:36:15 +0800 CST
  • Martin Hope
    Evan Carroll systemctl 状态显示:“状态:降级” 2018-06-03 18:48:17 +0800 CST
  • Martin Hope
    Tim 我们如何运行存储在变量中的命令? 2018-05-21 04:46:29 +0800 CST
  • Martin Hope
    Ankur S 为什么 /dev/null 是一个文件?为什么它的功能不作为一个简单的程序来实现? 2018-04-17 07:28:04 +0800 CST
  • Martin Hope
    user3191334 如何从 systemctl 服务日志中查看最新的 x 行 2018-02-07 00:14:16 +0800 CST
  • Martin Hope
    Marko Pacak Nano - 跳转到文件末尾 2018-02-01 01:53:03 +0800 CST
  • Martin Hope
    Kidburla 为什么真假这么大? 2018-01-26 12:14:47 +0800 CST
  • Martin Hope
    Christos Baziotis 在一个巨大的(70GB)、一行、文本文件中替换字符串 2017-12-30 06:58:33 +0800 CST

热门标签

linux bash debian shell-script text-processing ubuntu centos shell awk ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve