小编Ed *_*ton的帖子

如何在列分隔符边界线上方创建带有标签的 HTML 表格

我正在尝试创建一个显示预订的 HTML 表,例如:

   9am      10am     11am
    |--------|--------|--------|
Mon |<booked>|<booked>|        |
    |--------|--------|--------|
Run Code Online (Sandbox Code Playgroud)

我可以轻松完成大部分工作,但我无法弄清楚如何让标题行上的时间出现在列之间的行上方居中,如上所示,而不是出现在列中的单元格内,例如:

       9am      10am     11am
    |--------|--------|--------|
Mon |<booked>|<booked>|        |
    |--------|--------|--------|
Run Code Online (Sandbox Code Playgroud)

我一直在尝试几种解决方法,包括为每个“真实”列设置 3 列,这样我就可以将它们合并到标题行上,但这让我需要填充数据行的中间单元格,使其看起来像一个简单的单元格边界所以不是很好。

我觉得这很简单,但到目前为止,谷歌和反复试验都让我失望。

我试图在 Joomla 网站上的 K2 文章中执行此操作,因此我更喜欢仅在 HTML 中执行此操作的方法,而不是定义 CSS 样式表,因为这会在 Joomla 中打开 K2 文章的另一个问题。


在这里编辑是我要感谢@Johannes 的回答,但避免使用 CSS 样式表,因此我不必处理在 K2/Joomla 中实现它:

   9am      10am     11am
    |--------|--------|--------|
Mon |<booked>|<booked>|        |
    |--------|--------|--------|
Run Code Online (Sandbox Code Playgroud)

html html-table

4
推荐指数
1
解决办法
59
查看次数

用awk计算第95百分位数

我是awk脚本的新手,想要帮助计算包含这些数据的文件的第95百分位值:

0.0001357
0.000112
0.000062
0.000054
0.000127
0.000114
0.000136
Run Code Online (Sandbox Code Playgroud)

我试过了:

cat filename.txt | sort -n |
awk 'BEGIN{c=0} {total[c]=$1; c++;} END{print total[int(NR*0.95-0.5)]}'
Run Code Online (Sandbox Code Playgroud)

但是当我把它与excel比较时,我似乎没有得到正确的值.

awk

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

如何从 psql 查询将文本打印到标准输出?

我有从 bash shell 调用的以下(经过修改的)psql 脚本:

foo=$( psql -q -t -R $'\x01' -F $'\x02' \
                --variable="title=something" \
                --variable="severity=level9" \
                --pset='format=unaligned' \
                <<'EOF'
SET standard_conforming_strings=on;
SET myvars.title = :title;
SET myvars.severity = :severity;
DO $$
BEGIN
        IF EXISTS ( SELECT 1 from my_database
                WHERE title=current_setting('myvars.title') \
                AND severity=current_setting('myvars.severity') )
        THEN
                RAISE NOTICE 'Found existing entry';
        ELSE
                RAISE NOTICE 'Did not find existing entry';
        END IF;
END;
$$;
EOF
 )
Run Code Online (Sandbox Code Playgroud)

我希望在 bash 变量“foo”中捕获查询是否成功的一些指示。我想我可以在每个 RAISE NOTICE 语句之后添加某种 print/echo/return/whatever 语句,以从语句中输出 0 或 1,psql以便可以捕获它 …

postgresql plpgsql

3
推荐指数
1
解决办法
9556
查看次数

通过列号和grep访问data.table

如果我使用这个简单的data.table(一列)

mydata <- data.table(A=c("ID123", "ID22", "AAA", NA))
Run Code Online (Sandbox Code Playgroud)

我可以找到以"ID"开头的行的位置

grep("^ID", mydata[,A])
Run Code Online (Sandbox Code Playgroud)

如何使用数字来获得相同的结果?(说我想要第一栏).

我试过了

grep("^ID", mydata[,1, with=F])
Run Code Online (Sandbox Code Playgroud)

但它不起作用.

更重要的是,我想以data.table方式执行此操作,在括号内引入命令.

mydata[,grep("^ID",.SD), .SDcols=1]
Run Code Online (Sandbox Code Playgroud)

但这不起作用.

我已经找到了这种方式,但它太复杂了

mydata[,lapply(.SD, grep,pattern="ID"), .SDcols=1] 
Run Code Online (Sandbox Code Playgroud)

这样做的正确方法是什么?

稍微复杂一点:
如果我想同时计算多少行不是NA并以"ID"开头怎么办?

就像是

any(!(grepl("^ID", mydata[,A] ) | is.na(mydata[,A])))
Run Code Online (Sandbox Code Playgroud)

但更紧凑,在支架内.

我不喜欢grep认为NA不匹配而不是输出NA的事实.

r data.table

3
推荐指数
1
解决办法
1210
查看次数

将时间戳转换为就地文件中的纪元

我有一个制表符分隔文件,在第三个字段中有时间戳,我需要在bash中更改为epoch.

样本输入:

xyz@gmail.com   SALE    2017-04-26 12:47:27     30.0    1       201704
xyz@gmail.com   SALE    2017-04-26 12:46:15     20.0    2       201704
xyz@gmail.com   PAYBACK 2017-04-18 08:02:31     95.0    3       201704
xyz@gmail.com   SEND    2017-04-18 08:00:37     4800.0  4       201704
xyz@gmail.com   SEND    2017-04-17 14:59:34     4900.0  5       201704
Run Code Online (Sandbox Code Playgroud)

我尝试过awk 'BEGIN {IFS="\t"} {$3=system("date -d \""$3"\" '+%s'");print}' file,它给出了最接近的结果,但它在一行中显示了纪元,然后在换行符中再次显示记录,时间戳值为零.我要求所有人都在一个记录中替换第三个字段.

vim bash awk sed gawk

3
推荐指数
1
解决办法
343
查看次数

在 Bash 的目录中,每个文件中的每一行用一个随机数替换一个字符串

!/bin/bash

for file in ~/tdg/*.TXT
  do
    while read p; do
      randvalue=`shuf -i 1-99999 -n 1`
      sed -i -e "s/55555/${randvalue}/" $file
    done < $file
  done
Run Code Online (Sandbox Code Playgroud)

这是我的脚本。每次找到它时,我都试图用不同的随机数替换 55555。这目前有效,但它用相同的随机数替换了 55555 的每个实例。我试图用 $p 替换 sed 命令末尾的 $file ,但这只是失败了。

真的,即使我说到点是同一行上的每个实例都具有相同的随机数,但是每行使用一个新的随机数,那么我会很高兴。

编辑

我应该指定这一点。我想将替换的结果实际保存在文件中,而不仅仅是将结果打印到控制台。

编辑

在 JNevill 的出色帮助之后,我的脚本的最终工作版本:

!/bin/bash

for file in ~/tdg/*.TXT
do
  while read p; 
  do
    gawk '{$0=gensub(/55555/, int(rand()*99999), "g", $0)}1' $file > ${file}.new
  done < $file
  mv -f ${file}.new $file
done
Run Code Online (Sandbox Code Playgroud)

bash shell awk sed

3
推荐指数
1
解决办法
2830
查看次数

使用 Sed 或 awk 从curl 响应中解析出 JSON 并分配给变量以供以后使用

我正在编写一个要在 Linux 设备上运行的 bash 脚本,因此我无权安装 jq,我需要能够使用本机 Linux 工具

curl --location --request POST "https://api-mp.meraki.com/api/v1/networks/12345/switch/stacks/12345/routing/interfaces" \
  --header "X-Cisco-Meraki-API-Key: 123key" \
  --header "Content-Type: application/json" \
  --data '{
    "name": "L3 int",
    "subnet": "192.168.249.0/24",
    "interfaceIp": "192.168.249.2",
    "multicastRouting": "disabled",
    "vlanId": 140,
    "ospfSettings": {
        "area": "0",
        "cost": 1,
        "isPassiveEnabled": true
    }
}'  | sed -n 's|.*"interfaceID":"\([^"]*\)".*|\1|p' > $newVar
Run Code Online (Sandbox Code Playgroud)

服务器的响应返回以下内容:

{
"interfaceId": "12345",
"name": "PA L3 DR Int",
"subnet": "192.168.249.0/24",
"interfaceIp": "192.168.249.2",
"multicastRouting": "disabled",
"vlanId": 140,
"ospfSettings": {
    "area": "0",
    "cost": 1,
    "isPassiveEnabled": true
}
}
Run Code Online (Sandbox Code Playgroud)

然后我需要能够访问查询字符串参数中的interfaceID新变量

unix linux awk curl sed

3
推荐指数
1
解决办法
2642
查看次数

awk gsub 正则表达式,匹配不在双引号中的单词

我写了一个正则表达式来尝试使用 gsub 和 awk 替换每次出现的不在双引号中的单词。然而,即使该表达式适用于在线计算器,该表达式也根本无法替换我的脚本中的任何内容。

输入 =

studentNum=="00000"{print name, "is the prof"}

表达:

gsub( "studentNum(?=[^"]*(?:"[^"]*"[^"]*)*$)", "XXX", input)

预期输出:

XXX=="00000"{print name, "is the prof"}

regex unix awk

3
推荐指数
1
解决办法
63
查看次数

Bash awk ~ 如何向 awk 提供要打印的字段列表?

刚接触此网站:我在分析 csv 文件中的数据时遇到问题。

我编写了一个小脚本,用于从 csv 文件读取输入并仅打印所需的字段:

awk -F, -v _sourcefile=$i -v title="\"${k}\"" -v box="_${j}_" -v score="$dock_score_column" -v hbond="${xp_terms_columns[0]}" -v electro="${xp_terms_columns[1]}" -v phoben="${xp_terms_col umns[2]}" -v phobenhb="${xp_terms_columns[3]}" -v lowmw="${xp_terms_columns[4]}" -v rotpenal="${xp_terms_columns[5]}" -v lipophilicevdw="${xp_terms_columns[6]}" -v phobenpairhb="${xp_terms_columns[7]}" -v sitemap="${xp_terms_columns[8]}" -v penalties="${xp_terms_columns[9]}" -v pistack="${xp_terms_columns[10]}" -v hbpenal="${xp_terms_columns[11]}" -v expospenal="${xp_terms_columns[12]}" -v picat="${xp_terms_columns[13]}" -v clbr="${xp_terms_columns[14]}" -v zpotr="${xp_terms_columns[15]}"
'BEGIN{format = "%-8s %s %9s %9s %8s %10s %7s %10s %16s %14s %9s %11s %9s %9s %12s %7s %6s %7s\n"} $title_column ~ title && $source_column ~ _sourcefile && $source_column ~ box …

csv sorting bash awk

3
推荐指数
1
解决办法
122
查看次数

有没有办法使用 awk 来计算 2 个标志之间的行数并将该数字输入到特定字段中?

我有一组数据,其中包含地震波传播时间及其相应信息(即产生波的源以及该波沿着传播到达每个地震检波器的时间)。我正在尝试格式化数据以适合我的代码,以便使用数据进行一些断层扫描,但我对 awk 还比较陌生。我现在需要将每个镜头/源的接收器数量插入到镜头/源信息行中,但每次的数量都是可变的。有没有办法让 awk 计算行数并将其插入到正确的字段中?

我的数据格式如下。

记录源/镜头的每一行:

s 0.01 0 0 -1 0

源/镜头信息后面的每隔一行:

r 0.1 0 0 1.218 0.01
r 0.15 0 0 1.214 0.01
r 0.2 0 0 1.213 0.01

Run Code Online (Sandbox Code Playgroud)

我可以使用“s”作为镜头行的标志,并且我想计算每个源/镜头的“r”行数,并将该数字插入到相应的“s”行中。

每条“s”线的“r”线数变化很大。

给定此示例输入:

s 0.01 0 0 -1 0
r 0.1 0 0 1.218 0.01
r 0.15 0 0 1.214 0.01
r 0.2 0 0 1.213 0.01
s 1.01 0 0 -1 0
r 0.05 0 0 1.159 0.01
r 0.1 0 0 1.127 0.01
r 0.15 0 …
Run Code Online (Sandbox Code Playgroud)

awk counting reformatting

3
推荐指数
1
解决办法
154
查看次数

标签 统计

awk ×7

bash ×3

sed ×3

unix ×2

counting ×1

csv ×1

curl ×1

data.table ×1

gawk ×1

html ×1

html-table ×1

linux ×1

plpgsql ×1

postgresql ×1

r ×1

reformatting ×1

regex ×1

shell ×1

sorting ×1

vim ×1