我有一个包含行组的文本文件,从中我只需要每组中的前三行.
文件:
test1|pass
test1|pass
test1|pass
test1|pass
test1|pass
test2|fail
test2|fail
test2|fail
test2|fail
test3|pass
test3|pass
test3|pass
test3|pass
Run Code Online (Sandbox Code Playgroud)
预期产出:
test1|pass
test1|pass
test1|pass
test2|fail
test2|fail
test2|fail
test3|pass
test3|pass
test3|pass
Run Code Online (Sandbox Code Playgroud)
到目前为止我尝试了什么:
BEGIN {
FS = "|"
}
$1==x {
if (NR % 5 <= 3) {
print $0
}
next
}
{
x=$1
print $0
}
END {
printf "\n"
}
Run Code Online (Sandbox Code Playgroud) 我希望用sed或awk删除文件中的空行(换行,制表符和空格),但前提是这些空行在两个模式之间.
lorem lorem PATTERN1
\t
PATTERN2 lorem2 lorem2`
Run Code Online (Sandbox Code Playgroud)
我期望下面的结果是两个模式的两行连接.
lorem lorem PATTERN1PATTERN2 lorem2 lorem2
Run Code Online (Sandbox Code Playgroud) 这个问题纯粹是化妆的:
我想在给定字符串的最后一个"/"之后删除所有文本.所以如果输入是
mkdir -p $DEST/Users/Peter/Dropbox/Public/Vacation/P1000891.jpg
Run Code Online (Sandbox Code Playgroud)
输出应该是
mkdir -p $DEST/Users/Peter/Dropbox/Public/Vacation/
Run Code Online (Sandbox Code Playgroud)
(确切地说,输出中是否包含最后一个"/"并不重要.)
我发现了各种方法,例如:
my @templist = split "/", 'mkdir -p $DEST/Users/Peter/Dropbox/Public/Vacation/P1000891.jpg';
print join "/", splice(@templist, 0, -1);
Run Code Online (Sandbox Code Playgroud)
要么:
my ($a) = 'mkdir -p $DEST/Users/Peter/Dropbox/Public/Vacation/P1000891.jpg' =~ /(.*\/)+(?:[^\/]+)/;
print $a;
Run Code Online (Sandbox Code Playgroud)
但我认为这应该只使用正则表达式,也许搜索和替换可以实现?也许有先见之明?
我需要检查"添加/更改/修复/删除"字符串是否在提交日志消息中.我正在编写一个svn precommit钩子,并且预期的提交注释应该在消息中包含这4个字符串中的一个.
我使用的代码如下
REPOS=$1
TXN=$2
SVN="/usr/bin/svn";
SVNLOOK="/usr/bin/svnlook";
$SVNLOOK log "$REPOS" -t "$TXN" | \
grep "[a-zA-Z0-9]" > /dev/null
GREP_STATUS=$?
if [ $GREP_STATUS -ne 0 ]
then
"${ECHO}" "No Log comments present" >> "${LOG}"
echo "Your commit has been blocked because you didn't give any log message" 1>&2
echo "Please write a log message describing the purpose of your changes and" 1>&2
echo "then try committing again. -- Thank you" 1>&2
exit 1
fi
Run Code Online (Sandbox Code Playgroud)
在上面的代码中,
$SVNLOOK log "$REPOS" -t "$TXN"
Run Code Online (Sandbox Code Playgroud)
将给我用户输入的提交消息.现在我必须检查消息中是否存在任何字符串"已添加,已更改,已修复,已删除".那是, …
#! /bin/sh
a1=260
a2=9150
echo "$a1 * 100 / $a2" | bc
Run Code Online (Sandbox Code Playgroud)
输出是
2
Run Code Online (Sandbox Code Playgroud)
它应该在哪里
2.8415
Run Code Online (Sandbox Code Playgroud)
虽然我正在使用,为什么精度会丢失bc?
这是一个简短的问题,但我试图尽可能详细地提供.
我正在编译一个旧的,但仍然积极开发的fortran代码(f77标准)在Scientific Linux上.这段代码的推荐编译器是ifort和gfortran.使用gfortran我可以编译并运行此代码.但是,如果我使用DEBUG = 1标志进行编码,则代码会编译,但会以SEG FAULT终止.单步执行gdb会导致以下错误来源:
REAL*4 TIME_CURRENT
CALL CPU_TIME(TIME_CURRENT)
ISECS = 100*INT(TIME_CURRENT)
Run Code Online (Sandbox Code Playgroud)
该计划终止于:
Program received signal SIGFPE, Arithmetic exception.
timer (init=1, isecs=0) at myprog.f:1818
1818 ISECS = 100*INT(TIME_CURRENT)
Run Code Online (Sandbox Code Playgroud)
如果我在第1818行停止执行并检查ISECS和TIME_CURRENT,我得到:
(gdb) ptype(TIME_CURRENT)
type = real(kind=4)
(gdb) ptype(ISECS)
type = integer(kind=4)
Run Code Online (Sandbox Code Playgroud)
我试过更具体和使用:
ISECS = 100*INT(TIME_CURRENT,4)
Run Code Online (Sandbox Code Playgroud)
但它没有帮助.我没有看到这可能等同于算术错误?
我的(生成文件生成)调试编译标志是:
gfortran -fno-automatic -m32 -O0 -g \
-ffpe-trap=invalid,zero,overflow,underflow,precision -static-libgfortran
Run Code Online (Sandbox Code Playgroud)
当我编译出调试时,我不再收到SEG FAULT但是我的编译标志是
gfortran -fno-automatic -m32 -O2 -ffast-math -static-libgfortran
Run Code Online (Sandbox Code Playgroud)
我不是一个强大的程序员,所以任何帮助将不胜感激.请注意,我正在64位系统上进行编译,但强制进行32位编译,因为这是必需的.
我有一个awk和一个sed示例.两者似乎都使用相同的正则表达式,但输出不同.因此,模式扩展必须变得不同.但我无法得到差异.谁能解释一下?
$ echo "THE BEAR ATE THE FISH" |sed -e 's/[^ ]*(H|F)[^ ]*/<red>&/g'
THE BEAR ATE THE FISH
$ echo "THE BEAR ATE THE FISH" | awk 'gsub(/[^ ]*(H|F)[^ ]*/,"<red>&")'
<red>THE BEAR ATE <red>THE <red>FISH
$ sed --version
GNU sed version 4.1.5
$ awk --version
GNU Awk 3.1.5
Run Code Online (Sandbox Code Playgroud) 我有一个如下数据集
first 0 1
first 1 2
first 2 3
second 0 1
second 1 2
second 2 3
third 0 1
third 1 2
third 2 3
Run Code Online (Sandbox Code Playgroud)
我需要检查此文件并提取第一,第二和第三列的第三列,并将它们存储在不同的文件中.
输出文件应包含:
1
2
3
Run Code Online (Sandbox Code Playgroud) 鉴于以下输入:
check1;check2
check1;;check2
check1,check2
Run Code Online (Sandbox Code Playgroud)
和awk命令:
awk -F';+|,' '{print $1 FS $2}'
Run Code Online (Sandbox Code Playgroud)
FS 应该包含选定的分隔符?
如何打印选定的分隔符,即描述分隔符的正则表达式之一;,;;或者,不是.
如果输入check1;check2则输出应该是check1;check2.
我已将 PyTorch 模型导出到 CoreML,并希望快速进行推理。我将输入数据作为 2D float32 numpy ndarray 存储在磁盘上.npy,并且需要快速加载到 aMLMultiArray中。有没有方便的方法来做到这一点?