我有一个文本文件,格式如下.第一行是"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)
如何将两行合并为一行?
如何将多行连接到一行,使用分隔符表示换行符,并避免使用尾随分隔符,并可选择忽略空行?
例.考虑一个文本文件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)
什么是:
当然我可以写一些东西,或者只是使用别名.但我很想知道这些选择.
我有两个文件(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) 使用简单的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脚本循环的帮助,它将显示两个二进制文件之间的所有差异,只使用
cmp file1 file2
Run Code Online (Sandbox Code Playgroud)
它只显示了我想要使用cmp的第一个更改,因为它给出了一个偏移量,每个更改的行数,但如果你认为有一个更好的命令,我会对它开放:)谢谢
我正在尝试解析制表符分隔的数据,该数据已保存为具有无关数据的文本文件.我希望这是一个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)