我只想提取那些在输入文件中只出现一次的记录
输入文件1
CHEMBL184618
CHEMBL184618
CHEMBL198362
CHEMBL198362
CHEMBL218394
CHEMBL218394
CHEMBL221959
CHEMBL221959
CHEMBL24828
CHEMBL24827
Run Code Online (Sandbox Code Playgroud)
预期产出
CHEMBL24828
CHEMBL24827
Run Code Online (Sandbox Code Playgroud)
我已经完成了排序Filename.txt | uniq -d查找重复的ID并将它们保存在单独的文件中.然后我找到排序Filename.txt | uniq -c.第三步是从唯一ID中删除重复的ID.我想要一种有效的方法.
我正在尝试遍历文件夹中的文件并测试.txt扩展名。但是我收到以下错误:“ awk:无法打开=(没有这样的文件或目录)
这是我的代码:
!/bin/bash
files=$(ls);
for file in $files
do
# extension=$($file | awk -F . '{ print $NF }');
if [ $file | awk -F . "{ print $NF }" = txt ]
then
echo $file;
else
echo "Not a .txt file";
fi;
done;
Run Code Online (Sandbox Code Playgroud) 我有几个.json与此类似的文件。
{
"AcquisitionNumber": 1,
"TotalReadoutTime": 0.035,
"IntendedFor": "func/sub-02_task-rest_run-01_bold.nii.gz"
}
Run Code Online (Sandbox Code Playgroud)
我想使用 bash 变量更改“IntendedFor”行中的 sub 编号,循环遍历不同的 subs。例如,如果 sub 是 03:
sub=03
echo $sub
03
Run Code Online (Sandbox Code Playgroud)
如何使用此 bash 变量更改sub-02to的值sub-03?
我有以下数据的CSV
10.000.00.00,D3,1
10.001.00.00,C4,2
10.002.00.00,C5,2
10.000.88.99,B1,3
10.000.00.00,B2,3
10.000.00.00,C6,3
10.000.99.00,D1,3
Run Code Online (Sandbox Code Playgroud)
尝试下面的代码
cat Data.csv | awk -F , '$3 == "3" { print }'
Run Code Online (Sandbox Code Playgroud)
只需要获取最后值为3的行。
请让我知道该怎么做
我的输入文件如下所示:
“true true, rohith Rohith;
cold burn, and fact and fact good good?”
Run Code Online (Sandbox Code Playgroud)
输出应该是这样的:
"true, rohith Rohith;
cold burn, and fact and fact good?"
Run Code Online (Sandbox Code Playgroud)
我正在尝试使用 awk,但无法获得所需的结果。
awk '{for (i=1;i<=NF;i++) if (!a[$i]++) printf("%s ",$i,FS)}{printf("\n")}' input.txt
Run Code Online (Sandbox Code Playgroud)
有人可以在这里帮助我。
问候, 罗希斯
我像这样标记了一个 Kubernetes 命名空间:
kubectl label namespace kube-system name=kube-system
Run Code Online (Sandbox Code Playgroud)
我如何摆脱这个标签?
我编写了以下使用 awk 的 bash 脚本,目的是将第一个字符设置为小写。该脚本大部分工作正常,但是当我连接两个值时,我添加了一个额外的空格。任何想法如何删除这个错误的空间?
脚本:
#!/bin/bash
foo="MyCamelCaseValue"
awk '{s=tolower(substr($1,1,1))}{g=substr($1,2,length($1))}{print s,g}' <<<$foo
Run Code Online (Sandbox Code Playgroud)
输出:
我的CamelCaseValue
编辑:
请参阅 Bobdylan 和 RavinderSingh13 对已接受答案的讨论,因为它突出了默认 MacOs bash 版本的问题。
bash --version GNU bash,版本 3.2.57(1)-release (x86_64-apple-darwin19) 版权所有 (C) 2007 Free Software Foundation, Inc.
我如何只打印line(s)前后包含空白的行。我正在尝试各种 awk 和 grep 组合,但不知何故无法获得它。
tuv0657
tuv2330
tuv2133 Unable to get the ssh connection
tuv1988 Unable to get the ssh connection
tuv1049
tuv1683 Unable to get the ssh connection
tuv2101
Run Code Online (Sandbox Code Playgroud)
期望:
tuv0657
tuv1049
tuv2330
tuv2101
Run Code Online (Sandbox Code Playgroud)
我试过的:
我在下面试过但没有得到结果..
$ awk '{if ($2=="") print $0}' file
$ grep -E --line-number --with-filename '^$'
Run Code Online (Sandbox Code Playgroud) 我最近在 Golang 降价解析器中看到了以下代码:
blankLines := make([]lineStat, 0, 128)
isBlank := false
for { // process blocks separated by blank lines
_, lines, ok := reader.SkipBlankLines()
if !ok {
return
}
lineNum, _ := reader.Position()
if lines != 0 {
blankLines = blankLines[0:0]
l := len(pc.OpenedBlocks())
for i := 0; i < l; i++ {
blankLines = append(blankLines, lineStat{lineNum - 1, i, lines != 0})
}
}
Run Code Online (Sandbox Code Playgroud)
我对做什么感到困惑blankLines = blankLines[0:0]。这是一种预先添加到数组的方法吗?
cat file1.txt | awk -F '{print $1 "|~|" $2 "|~|" $3}' > file2.txt
我正在使用上面的命令从 file1 过滤前三列并放入文件中。
但只获取列名而不是列数据。
怎么做?
|~| - 是分隔符。
file1.txt 的值为:
a|~|b|~|c|~|d|~|e
1|~|2|~|3|~|4|~|5
11|~|22|~|33|~|44|~|55
111|~|222|~|333|~|444|~|555
Run Code Online (Sandbox Code Playgroud)
我的加急输出是:
a|~|b|~|c
1|~|2|~|3
11|~|22|~|33
111|~|222|~|333
Run Code Online (Sandbox Code Playgroud)