我有一个这样的文件:
78@54@this@15@23
65@22@is@92@16
34@12@an@14@18
13@42@example@52@22
Run Code Online (Sandbox Code Playgroud)
我想把它改成这样:
"78"@54@"this"@15@23
"65"@22@"is"@92@16
"34"@12@"an"@14@18
"13"@42@"example"@52@22
Run Code Online (Sandbox Code Playgroud)
我已经为此苦苦挣扎了很长时间,但我不明白该怎么做。任何帮助表示赞赏,谢谢。
我有两个行数相同的文件 A 和 B。它们中的每一个都有多个列。我想在文件 A 中为每一行添加字段 6,在文件 B 中添加字段 3。例如:
文件A:
2769 RUT10EKl3fY 0 0.00483891 1352626500270 2
2773 0XbIZqg4v7w 0 0.00360106 1352626851193 3
2777 j1tuJt5IyUw 0 0.00460544 1352627235337 4
Run Code Online (Sandbox Code Playgroud)
文件 B:
2769 RUT10EKl3fY 1
2773 0XbIZqg4v7w 8
2777 j1tuJt5IyUw 9
Run Code Online (Sandbox Code Playgroud)
结果(1+2、3+8、9+4):
3
11
13
Run Code Online (Sandbox Code Playgroud)
我怎样才能做到这一点?
我想知道是否可以在从过去的某一年开始到最近的某一天或今天的列中生成每小时或每天的时间步长日期。更清楚地说,我想创建一列从 2000-10-10 100 到 2012-12-31 2400 的数据。输出文件看起来像
Date
2000-01-01 100
2000-01-01 200
2000-01-01 300
.
.
.
.
.
2012-12-31 2400
Run Code Online (Sandbox Code Playgroud) 我正在使用:
ls /proc | grep -v "^[0-9].*"
Run Code Online (Sandbox Code Playgroud)
获取 /proc 中所有不以数字开头的文件和目录的列表。输出是一个单列列表,即:
acpi
asound
buddyinfo
bus
Run Code Online (Sandbox Code Playgroud)
我怎样才能使它成为一个多列或项目列表,即:
acpi asound buddyinfo bus
Run Code Online (Sandbox Code Playgroud)
或者
acpi,asound,buddyinfo,bus
Run Code Online (Sandbox Code Playgroud)
我试过:
$ ls /proc | grep -v "^[0-9].*" | column -c5
Run Code Online (Sandbox Code Playgroud)
但仍然有 1 列。
根据 man column
:
-x Fill columns before filling rows.
Run Code Online (Sandbox Code Playgroud)
这个选项似乎没有任何作用。知道如何使用它吗?
文件1:
00:00 274
00:04 476
00:05 450
00:06 499
00:07 373
00:08 206
00:09 471
00:10 154
Run Code Online (Sandbox Code Playgroud)
文件2:
00:00 183
00:01 60
00:02 344
00:03 540
00:04 450
00:07 348
00:09 473
00:10 203
Run Code Online (Sandbox Code Playgroud)
期望的输出:
00:00,274,183
00:01,0,60
00:02,0,344
00:03,0,540
00:04,476,450
00:05,450,0
00:06,499,0
00:07,373,348
00:08,206,0
00:09,471,473
00:10,154,203
Run Code Online (Sandbox Code Playgroud)
将检查每个文件的第 1 列,如果相同,则将值连接到输出。请注意两个文件中不存在的那些内容的“0”值。此外,这将用于组合 6 个文件的内容。
我想根据第一列的值比较两个文件:
文件 1
aaa 23 3
bbb 56 6
ccc 45 2
Run Code Online (Sandbox Code Playgroud)
文件 2
bbb m a
aaa a m
ccc m m
Run Code Online (Sandbox Code Playgroud)
输出文件应该是:
aaa a m
bbb m a
ccc m m
Run Code Online (Sandbox Code Playgroud)
即,我们需要以第一个文件的第一列顺序打印第二个文件的第 2 列和第 3 列。
有人可以为此建议一个 awk 脚本吗?
是否有可能以全行复制File1
在新File3
给出的指令后File2
通过使用简单的bash脚本使用sed
或awk
?
File1: /*two or more columns*/
AC 456324
DC 689712
GH 123677
KL 236587
File2: /*one column*/
AC
DC
File3:
AC 456324
DC 689712
Run Code Online (Sandbox Code Playgroud)
我实际上是使用 Python 字典来执行此操作的,我想知道您是否知道一种简单的方法。
在 shell 中,我如何通过菜单上的单词长度获得均匀长度的空格?
我试图获得最长字符串的长度,然后通过最长的字符串 +1 创建每列长度......我也遇到了很多问题,我想阅读更多关于这个主题的信息。
会是awk
还是grep
?
menuNAME menuNAME2 menuNAME3
word word2 THISwordisLongest
THISwordisLongest word wordLONG
wordLONG THISwordisLongest word
Run Code Online (Sandbox Code Playgroud)
预期输出:
menuNAME menuNAME2 menuNAME3
word wordLONG THISwordisLongest
THISwordisLongest word wordLONG
wordLONG THISwordisLongest word
Run Code Online (Sandbox Code Playgroud) 我通常用于column
将输入转换为表格,例如:
$ echo 'a\tb\tc\nd\te\tf' | column -t -s $'\t'
a b c
d e f
Run Code Online (Sandbox Code Playgroud)
但是它会折叠空列,例如:
$ echo 'a\tb\tc\nd\t\tf' | column -t -s $'\t'
a b c
d f
Run Code Online (Sandbox Code Playgroud)
当有连续的分隔符时,而不是打印一个空列。这就是我想要的,使用column
或以其他方式:
a b c
d f
Run Code Online (Sandbox Code Playgroud)