举个例子,假设我有:
One, Two.
OnE, Two.
ONE, TWO.
Run Code Online (Sandbox Code Playgroud)
我只想将全部大写的行替换为小写,这样我就得到:
One, Two.
OnE, Two.
one, two.
Run Code Online (Sandbox Code Playgroud)
我在尝试:
gsed '/[a-z]/!c\L&'
Run Code Online (Sandbox Code Playgroud)
它正确匹配行,但将其替换为:L&
One, Two.
OnE, Two.
L&
Run Code Online (Sandbox Code Playgroud)
如何将其转换为小写?
我在 L 之前尝试了 2 或 3 个反斜杠,但它只是将它们放入输出中。
如果有更好的选择,我将使用 awk 或 tr 或其他一些实用程序。
另外,如果版本很重要:
gsed --version
gsed (GNU sed) 4.9
Run Code Online (Sandbox Code Playgroud) 我正在处理一个格式如下的文件:
12345:ABCDEFG
789:HIJK
4963158:LMNOPQRSTUV
Run Code Online (Sandbox Code Playgroud)
每行以不同长度的数字开头,后跟一个冒号,然后是一串不同长度的字母。我想只捕获每行开头的数字并将它们放入一个新文件中,如下所示。
12345
789
4963158
Run Code Online (Sandbox Code Playgroud)
这与我得到的最接近,但它仍然打印整行,而不仅仅是数字。
sed -r 's/([^0-9]+d)(:)([A-Z]+)$/\1/' example.txt >> justnumbers.txt
我在语法上做错了什么?
我有一个看起来像这样的文件
$ cat IP
10.3.1.1
10.4.1.1
10.6.3.1
10.19.4.2
10.22.3.4
Run Code Online (Sandbox Code Playgroud)
我如何让它看起来像:
$ cat IP
10.3.1.1, 10.4.1.1, 10.6.3.1, 10.19.4.2, 10.22.3.4
Run Code Online (Sandbox Code Playgroud) 我有几个大的 .csv 文件,我想将它们转换为二进制(1 和 0)格式。其中,除前两个字段外,所有包含文本的单元格都将变为 1,0 将保持为 0。
head Test.csv
Iss1,1,0,0,Hsapiens-I34,0,0,0,Mmusculus-H01,0,0
Iss1,11,0,Scerevisiae-U09,Hsapiens-I05,0,0,0,0,0,0
Iss1,21,0,0,Hsapiens-I05,0,0,0,Hsapiens-I31,0,0
Iss1,31,0,0,Mmusculus-H13,0,0,0,0,0,Hsapiens-I31
Iss1,41,0,Scerevisiae-U09,0,0,0,0,0,0,Hsapiens-I21
Iss1,51,0,0,0,0,0,0,Scerevisiae-U25,0,Hsapiens-I21
Iss1,61,0,0,Hsapiens-I34,0,0,0,Mmusculus-H13,0,0
Run Code Online (Sandbox Code Playgroud)
预期结果是
head Test.csv
Iss1,1,0,0,1,0,0,0,1,0,0
Iss1,11,0,1,1,0,0,0,0,0,0
Iss1,21,0,0,1,0,0,0,1,0,0
Iss1,31,0,0,1,0,0,0,0,0,1
Iss1,41,0,1,0,0,0,0,0,0,1
Iss1,51,0,0,0,0,0,0,1,0,1
Iss1,61,0,0,1,0,0,0,1,0,0
Run Code Online (Sandbox Code Playgroud)
其中文件中的所有文本都转换为 1。
如果有人能给我一些关于如何克服这个问题的建议,我将不胜感激。
谢谢
如何在以数字开头的每列的开头添加一个字符:
添加 ac
的示例:
4 r4 8 8 4
所以我得到这个输出:
c4 r4 c8 c8 c4
它应该适用于可变数量的列。
任何人都知道如何扭转这个:
FX_AM140_EML AM140
Backend/aa.java
Backend/bb.java
Backend/cc.java
Backend/dd.java
Backend/ee.java
FX_AM172_EML AM172
Backend/aa.java
Backend/bb.java
Run Code Online (Sandbox Code Playgroud)
到这个?
FX_AM140_EML AM140 Backend/aa.java
FX_AM140_EML AM140 Backend/bb.java
FX_AM140_EML AM140 Backend/cc.java
FX_AM140_EML AM140 Backend/dd.java
FX_AM140_EML AM140 Backend/ee.java
FX_AM172_EML AM172 Backend/aa.java
FX_AM172_EML AM172 Backend/bb.java
Run Code Online (Sandbox Code Playgroud) 我有一个文件,其中的条目key: value
格式如下:
猫数据.txt
name: 'tom'
tom_age: '31'
status_tom_mar: 'yes'
school: 'anne'
fd_year_anne: '1987'
name: 'hmz'
hmz_age: '21'
status_hmz_mar: 'no'
school: 'svp'
fd_year_svp: '1982'
name: 'toli'
toli_age: '41'
Run Code Online (Sandbox Code Playgroud)
同样...
我只需要查找并打印那些key: value
具有重复键作为单个条目的键。
下面的代码让我得到重复的键
cat data.txt | awk '{ print $1 }' | sort | uniq -d
name:
school:
Run Code Online (Sandbox Code Playgroud)
但是,我想要输出将重复键的值连接在一行中。
预期输出:
name: ['tom', 'hmz', 'toli']
school: ['anne', 'svp']
tom_age: '31'
status_tom_mar: 'yes'
fd_year_anne: '1987'
hmz_age: '21'
status_hmz_mar: 'no'
fd_year_svp: '1982'
toli_age: '41'
Run Code Online (Sandbox Code Playgroud)
你能建议一下吗?
我在 Ubuntu 机器上有这个数据集:
37.500 0.0000 0.005605
37.750 0.0000 -0.027858
38.000 0.0000 -0.060678
38.250 0.0000 -0.088557
38.500 0.0000 -0.109210
38.750 0.0000 -0.122482
39.000 0.0000 -0.129770
39.250 0.0000 -0.133190
39.500 0.0000 -0.134538
39.750 0.0000 -0.134015
40.000 0.0000 -0.129660
40.250 0.0000 -0.117858
40.500 0.0000 -0.094709
40.750 0.0000 -0.057622
41.000 0.0000 -0.006853
Run Code Online (Sandbox Code Playgroud)
我需要找到第 3 列的最大值,该最大值位于第 1 列的 38 和 40 之间。
这只是一个示例数据集。
我正在学习Perl,但我不知道如何解决这个问题。
我有一个.txt
以下形式的文件:
1 16.3346384
2 11.43483
3 1.19819
4 1.1113829
5 1.0953443
6 1.9458343
7 1.345645
8 1.3847385794
9 1.3534344
10 2.1117454
11 1.17465
12 1.4587485
Run Code Online (Sandbox Code Playgroud)
第一列仅包含行号,此处不感兴趣,但它存在于文件中;第二列中的值是相关部分。
我想输出第二列中编号小于 2.00 的最长连续行序列。对于上面的示例,这将是第 3 行到第 9 行,输出应为:
1.19819
1.1113829
1.0953443
1.9458343
1.345645
1.3847385794
1.3534344
Run Code Online (Sandbox Code Playgroud) 我有大约 25,000 个 JSON 文件需要验证和检查,我注意到一些文件已经重复,导致使用 Excel 将 JSON 转换为 CSV 时出现错误。
我试图删除之后的所有字符串,"version":"0.2.3"}
因为这表明 JSON 的结尾,然后再重复,"version": "0.2.3"}{"analysis": {
因此我需要保留并"version": "0.2.3"}
删除{"analysis": {
其后面的所有内容,并将这些更改应用到所有 25,000 个文件。我见过有人使用 grep 和 sed 但我自己似乎无法让它们工作。
如果有人可以提供帮助,我将不胜感激,因为手动删除文本是不可取的,所以我希望在 bash 或其他东西中有一个衬垫!
下面是我需要修复的内容(其中一个文件的精简版本),下面是所需的输出。正如您所看到的,无论出于何种原因,JSON 数据可能会在 API 使用过程中自我复制。
有问题的输入(已修剪json
):
{"analysis":{"score":3},"sample":{"completed":"2022-01-27T21:22:21Z","created":"2022-01-27T21:17:57Z","id":"220127-z5h84saffl","md5":"7871a75734af389b787bad57a3ea087d","score":3,"sha1":"58a8689ee76a46559ea56a52d20425f44c8ff601","sha256":"23c5dee027c7969aabb5828641c55a005f30fb166a5006dbe3a817f56ca0e32a"},"version":"0.2.3"}{"analysis":{"score":3},"sample":{"completed":"2022-01-27T21:22:21Z","created":"2022-01-27T21:17:57Z","id":"220127-z5h84saffl","md5":"7871a75734af389b787bad57a3ea087d","score":3,"sha1":"58a8689ee76a46559ea56a52d20425f44c8ff601","sha256":"23c5dee027c7969aabb5828641c55a005f30fb166a5006dbe3a817f56ca0e32a"},"version":"0.2.3"}
Run Code Online (Sandbox Code Playgroud)
期望的输出:
{"analysis":{"score":3},"sample":{"completed":"2022-01-27T21:22:21Z","created":"2022-01-27T21:17:57Z","id":"220127-z5h84saffl","md5":"7871a75734af389b787bad57a3ea087d","score":3,"sha1":"58a8689ee76a46559ea56a52d20425f44c8ff601","sha256":"23c5dee027c7969aabb5828641c55a005f30fb166a5006dbe3a817f56ca0e32a"},"version":"0.2.3"}
Run Code Online (Sandbox Code Playgroud) 我在 Linux 机器上有一个包含两列的文本文件:
12345 0102010205
54322 2221110051
123456 1122011510
Run Code Online (Sandbox Code Playgroud)
我想将文件更改为如下所示:
12345 0 1 0 2 0 1 0 2 0 5
54322 2 2 2 1 1 1 0 0 5 1
123456 1 1 2 2 0 1 1 5 1 0
Run Code Online (Sandbox Code Playgroud)
如何更改第一列,使其向右对齐(如数字所示)?
有人可以帮我用最可靠的方法来更改第二列数字之间的空格吗?请解释代码的元素及其作用。
谢谢
我有一个由目录中所有文件生成的文本文件。我想使用此文件作为我拥有的脚本的输入,但我需要以特定方式格式化文本文件才能正确解析。
目前,文本文件(文件名列表)的格式如下:
A1_R1.fastq.gz
A1_R2.fastq.gz
A2_R1.fastq.gz
A2_R2.fastq.gz
A3_R1.fastq.gz
A3_R2.fastq.gz
Run Code Online (Sandbox Code Playgroud)
我需要每个样本的配对读取(具有相同名称但不同RN
值的文件)位于同一行,并用制表符分隔:
A1_R1.fastq.gz A1_R2.fastq.gz
A2_R1.fastq.gz A2_R2.fastq.gz
A3_R1.fastq.gz A3_R2.fastq.gz
Run Code Online (Sandbox Code Playgroud)
由于我有 >1000 个条目,我希望有一种使用 awk 或类似方法来修改文件的方法,但我对 awk 没有太多经验。
我有一些.vcf
文件,我想过滤掉一些变体。这只是我文件的一小部分:文件开头有一些标题行(以 ## 开头),然后是变体(每个变体一行)。
##fileformat=VCFv4.2
##source=combiSV-v2.2
##fileDate=Mon May 8 11:32:53 2023
##contig=<ID=chrM,length=16571>
##contig=<ID=chr1,length=249250621>
##INFO=<ID=END,Number=1,Type=Integer,Description="End position of the variant described in this record">
##INFO=<ID=SVCALLERS,Number=.,Type=String,Description="SV callers that support this SV">
##FORMAT=<ID=GT,Number=1,Type=String,Description="Genotype">
##FORMAT=<ID=DR,Number=1,Type=Integer,Description="# High-quality reference reads">
##FORMAT=<ID=DV,Number=1,Type=Integer,Description="# High-quality variant reads">
#CHROM POS ID REF ALT QUAL FILTER INFO FORMAT Sample
1 10862 id.1 N <INS> . PASS SVTYPE=INS;SVLEN=101;END=10862;SVCALLERS=cutesv,SVIM GT:DR:DV 1/1:0:26
1 90258 id.2 N <INS> . PASS SVTYPE=INS;SVLEN=118;END=90258;SVCALLERS=SVIM,NanoSV GT:DR:DV 1/1:0:9
1 90259 id.3 N <INS> . PASS SVTYPE=INS;SVLEN=36;END=90259;SVCALLERS=Sniffles GT:DR:DV 0/1:44:7
1 185824 …
Run Code Online (Sandbox Code Playgroud) text-processing ×12
awk ×7
sed ×7
command-line ×2
json ×1
perl ×1
scripting ×1
shell-script ×1
uniq ×1
yaml ×1