我有一个格式如下的文件:
string1,string2,string3,...
...
Run Code Online (Sandbox Code Playgroud)
我必须分析第二列,计算每个字符串的出现次数,并生成一个格式如下的文件:
"number of occurrences of x",x
"number of occurrences of y",y
...
Run Code Online (Sandbox Code Playgroud)
我设法编写以下脚本,工作正常:
#!/bin/bash
> output
regExp='^\s*([0-9]+) (.+)$'
while IFS= read -r line
do
if [[ "$line" =~ $regExp ]]
then
printf "${BASH_REMATCH[1]},${BASH_REMATCH[2]}\n" >> output
fi
done <<< "`gawk -F , '!/^$/ {print $2}' $1 | sort | uniq -c`"
Run Code Online (Sandbox Code Playgroud)
我的问题是:有一种更好,更简单的方法来完成这项工作吗?
特别是我不知道如何解决这个问题:
gawk -F , '!/^$/ {print $2}' miocsv.csv | sort | uniq -c | gawk '{print $1","$2}'
Run Code Online (Sandbox Code Playgroud)
问题是string2可以包含空格,如果是这样,gawk上的第二次调用将截断字符串.我不知道如何打印所有字段"从2到NF",保持分隔符,这可以连续发生几次.
非常感谢,再见
编辑:
如上所述,这里有一些示例数据:
(这是一项练习,对于创造性而言遗憾)
输入:
*,*,*
test, test …Run Code Online (Sandbox Code Playgroud) 我试图更好地理解就地操作在 PyTorch autograd 中的作用。我的理解是,它们可能会导致问题,因为它们可能会覆盖后退步骤中所需的值。
我正在尝试构建一个示例,其中就地操作打破了自动微分,我的想法是在用于计算其他张量后覆盖反向传播期间所需的一些值。
我使用赋值作为就地操作(我尝试了+=相同的结果),我以这种方式仔细检查它是就地操作:
x = torch.arange(5, dtype=torch.float, requires_grad=True)
y = x
y[3] = -1
print(x)
Run Code Online (Sandbox Code Playgroud)
印刷:
tensor([ 0., 1., 2., -1., 4.], grad_fn=<CopySlices>)
Run Code Online (Sandbox Code Playgroud)
这是我打破 autograd 的尝试:
tensor([ 0., 1., 2., -1., 4.], grad_fn=<CopySlices>)
Run Code Online (Sandbox Code Playgroud)
这打印
tensor([0.0000, 0.2000, 0.4000, 0.6000, 0.8000])
Run Code Online (Sandbox Code Playgroud)
x = torch.arange(5, dtype=torch.float, requires_grad=True)
out1 = x ** 2
out2 = out1 / 10
# out1[3] += 100
out2.sum().backward()
print(x.grad)
Run Code Online (Sandbox Code Playgroud)
这打印:
tensor([0.0000, 0.2000, 0.4000, 0.6000, 0.8000])
Run Code Online (Sandbox Code Playgroud)
我期待获得不同的毕业生。
grad_fn=<CopySlices>。我无法理解为什么正则表达式:
[^\d\s\w,]
Run Code Online (Sandbox Code Playgroud)
匹配字符串:
"leonardo,davinci"
Run Code Online (Sandbox Code Playgroud)
那是我的考验:
$ echo "leonardo,davinci" | egrep '[^\d\w\s,]'
leonardo,davinci
Run Code Online (Sandbox Code Playgroud)
虽然这按预期工作:
$ echo "leonardo,davinci" | egrep '[\S\W\D]'
$
Run Code Online (Sandbox Code Playgroud)
非常感谢
我在github上格式化README时遇到一些问题。
这是原始的自述文件:
| Italic | Block letters |
:-------------------------:|:-------------------------:
 | 
 | 
 | 
Run Code Online (Sandbox Code Playgroud)
它只是一张具有对某些图像的相对引用的表。
参考的图像具有相同的尺寸。
为什么中间行中包含的图像较小?