相关疑难解决方法(0)

如何从命令行将每两行合并为一行?

我有一个文本文件,格式如下.第一行是"KEY",第二行是"VALUE".

KEY 4048:1736 string
3
KEY 0:1772 string
1
KEY 4192:1349 string
1
KEY 7329:2407 string
2
KEY 0:1774 string
1
Run Code Online (Sandbox Code Playgroud)

我需要与键相同的行中的值.所以输出应该是这样的......

KEY 4048:1736 string 3
KEY 0:1772 string 1
KEY 4192:1349 string 1
KEY 7329:2407 string 2
KEY 0:1774 string 1
Run Code Online (Sandbox Code Playgroud)

如果我可以像$或使用一些分隔符会更好,:

KEY 4048:1736 string , 3
Run Code Online (Sandbox Code Playgroud)

如何将两行合并为一行?

bash awk grep sed

137
推荐指数
12
解决办法
21万
查看次数

在Unix命令行上简洁便携的"加入"

如何将多行连接到一行,使用分隔符表示换行符,并避免使用尾随分隔符,并可选择忽略空行?

例.考虑一个文本文件foo.txt,有三行:

foo
bar
baz
Run Code Online (Sandbox Code Playgroud)

所需的输出是:

foo,bar,baz
Run Code Online (Sandbox Code Playgroud)

我现在使用的命令:

tr '\n' ',' <foo.txt |sed 's/,$//g'
Run Code Online (Sandbox Code Playgroud)

理想情况下它会是这样的:

cat foo.txt |join ,
Run Code Online (Sandbox Code Playgroud)

什么是:

  1. 最便携,简洁,可读的方式.
  2. 使用非标准unix工具的最简洁方法.

当然我可以写一些东西,或者只是使用别名.但我很想知道这些选择.

unix shell

74
推荐指数
4
解决办法
2万
查看次数

如何逐行合并两个文件

我有两个文件(file1.txt和file2.txt),文件只是示例.

如何合并这两个文件,以便创建文件 - merge_files.txt作为示例3

我现在写的是ksh脚本,所以可以用ksh,awk,sed,perl one liner等完成合并

背景 - 为什么我需要合并文件:我的目标是将OLD文件(存在于第一个字段中)重命名为NEW文件(存在于第二个字段中),

例1

more file1.txt

/etc/port1-192.9.200.1-255.555.255.0
/etc/port2-192.9.200.1-255.555.255.0
/etc/port3-192.9.200.1-255.555.255.0
/etc/port4-192.9.200.1-255.555.255.0
/etc/port5-192.9.200.1-255.555.255.0
.
.
.
.
Run Code Online (Sandbox Code Playgroud)

例题

more file2.txt

/etc/port1-192.90.2.1-255.555.0.0
/etc/port2-192.90.2.1-255.555.0.0
/etc/port3-192.90.2.1-255.555.0.0
/etc/port4-192.90.2.1-255.555.0.0
/etc/port5-192.90.2.1-255.555.0.0
.
.
.
.
Run Code Online (Sandbox Code Playgroud)

示例3

 more merge_files.txt



 /etc/port1-192.9.200.1-255.555.255.0  /etc/port1-192.90.2.1-255.555.0.0
 /etc/port2-192.9.200.1-255.555.255.0  /etc/port2-192.90.2.1-255.555.0.0
 /etc/port3-192.9.200.1-255.555.255.0  /etc/port3-192.90.2.1-255.555.0.0
 /etc/port4-192.9.200.1-255.555.255.0  /etc/port4-192.90.2.1-255.555.0.0
 /etc/port5-192.9.200.1-255.555.255.0  /etc/port5-192.90.2.1-255.555.0.0
 .
 .
 .
 .
 .
Run Code Online (Sandbox Code Playgroud)

example4(merge_files.txt结构)

 first field                           second field

 OLD file                              NEW file
Run Code Online (Sandbox Code Playgroud)

linux perl awk ksh sed

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

如何将文本文件的每两行与Bash配对?

使用简单的bash脚本,我生成一个包含许多行的文本文件,如下所示:

192.168.1.1
hostname1
192.168.1.2
hostname2
192.168.1.3
hostname3
Run Code Online (Sandbox Code Playgroud)

现在我想重新格式化这个文件,看起来像这样:

192.168.1.1 hostname1
192.168.1.2 hostname2
192.168.1.3 hostname3
Run Code Online (Sandbox Code Playgroud)

我将如何以这种方式重新格式化?也许sed吧?

bash sed text-files

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

如何使用"cmp"来比较两个二进制文件并找到它们不同的所有字节偏移量?

我希望得到一些Bash脚本循环的帮助,它将显示两个二进制文件之间的所有差异,只使用

cmp file1 file2 
Run Code Online (Sandbox Code Playgroud)

它只显示了我想要使用cmp的第一个更改,因为它给出了一个偏移量,每个更改的行数,但如果你认为有一个更好的命令,我会对它开放:)谢谢

unix bash shell

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

如何将制表符分隔的数据(不同格式)解析为data.table/data.frame?

我正在尝试解析制表符分隔的数据,该数据已保存为具有无关数据的文本文件.我希望这是一个R data.table/data.frame.

制表符分隔格式如下:

A   1092    -   1093    +   1X
B   1093    HRDCPMRFYT
A   1093    +   1094    -   1X
B   1094    BSZSDFJRVF
A   1094    +   1095    +   1X
B   1095    SSTFCLEPVV
...
Run Code Online (Sandbox Code Playgroud)

只有两种类型的行,A和B.一直有5列,例如第一行,

1092    -   1093    +   1X
Run Code Online (Sandbox Code Playgroud)

B始终有两列:

1093    HRDCPMRFYT
Run Code Online (Sandbox Code Playgroud)

问题:如何使用不同格式的"交替"行解析文件?

假设这是一个只有这种格式的文本文件,交替排列A和B,分别有5列和2列.你如何将其解析为R data.table?我的想法是如何创建以下格式:

1092    -    1093    +    1X    1093    HRDCPMRFYT
1093    +    1094    -    1X    1094    BSZSDFJRVF
1094    +    1095    +    1X    1095    SSTFCLEPVV
... 
Run Code Online (Sandbox Code Playgroud)

parsing r tab-delimited data.table

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

标签 统计

bash ×3

sed ×3

awk ×2

shell ×2

unix ×2

data.table ×1

grep ×1

ksh ×1

linux ×1

parsing ×1

perl ×1

r ×1

tab-delimited ×1

text-files ×1