小编Arc*_*mar的帖子

比较 unix 和 awk 中的两个文件

我必须比较两个文件,file1 和 file2。每个文件有 56 列,以|. 第一列是文件中的员工编号,我将检查第二个文件中是否存在相同的员工编号。如果不是,我们会将整行写入输出文件。如果 file2 中存在相同的员工编号,我需要比较每列的值。如果数据不匹配,我们必须将其写入输出文件。如果每列的值匹配,那么我们需要省略该记录。

示例文件
文件 1

2620|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality and Wipro Way|||
2623|256034|131021|Mission Quality and Wipro Way|||
Run Code Online (Sandbox Code Playgroud)

档案 2

2620|256034|234567|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||
2623|256034|131021|Mission Quality and Wipro Way|||
Run Code Online (Sandbox Code Playgroud)

示例输出:

2620|256034|131021|Mission Quality and Wipro Way|||
2621|256034|131021|Mission Quality and Wipro Way|||
2622|256034|131021|Mission Quality|||
Run Code Online (Sandbox Code Playgroud)

diff awk file-comparison

5
推荐指数
1
解决办法
1751
查看次数

避免使用 system() api 命令注入

我们有一个遗留的 C 代码,用于允许权限较低的用户以升级的权限运行自定义脚本。这设置了 SUID 位。此代码将 PATH env 限制为特定文件夹,然后使用system()api 使用受限 shell 执行脚本:

/bin/bash -r -c "script <arg>"
Run Code Online (Sandbox Code Playgroud)

由于路径受到限制,它只能执行该特定文件夹中的脚本。

现在知道了使用system()api命令注入的所有陷阱,可以采取哪些措施来避免命令注入?这在各种脚本等的许多地方使用,所以不想做一个全新的实现来避免任何回归。

linux c

5
推荐指数
1
解决办法
825
查看次数

为什么 ping 工作时“ping -l”不起作用?

我可以ping

ping AddressIp
64 bytes from indirizzoIp: icmp_req=1 ttl=42 time=149 ms
Run Code Online (Sandbox Code Playgroud)

但有额外的参数

ping AddressIp -l 1400 
ping: cannot set preload to value > 3

ping AddressIp -t -l 1400
ping: can't set unicast time-to-live: Invalid argument
Run Code Online (Sandbox Code Playgroud)

为什么我ping不通?

ping

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

如何在 Linux 中使用 awk 或 grep 或 sed 命令将文件的一部分提取到单独的文件中

我有如下所示的文本文件:

输入文件1.txt

.......................
cha21   1       3       5       nar
cha21   2       3       6       piy
cha23   2       3       5       ram
cha23   3       3       3       dam
cha27   5       3       7       pam
................................
Run Code Online (Sandbox Code Playgroud)

我想将与“cha21”、“cha23”和“cha27”行对应的所有 5 列提取到 3 个不同的输出文件中(例如,cha21.txt、cha23.txt、cha27.txt)。

输出文件

cha21.txt

..........
cha21   1       3       5       nar
cha21   2       3       6       piy
......................
Run Code Online (Sandbox Code Playgroud)

cha23.txt

cha23   2       3       5       ram
cha23   3       3       3       dam
...................................
Run Code Online (Sandbox Code Playgroud)

cha27.txt

cha27   5       3       7       pam
...........................
Run Code Online (Sandbox Code Playgroud)

我可以对 3 个文件使用 grep 命令 3 次执行此操作...无论如何我可以一次完成所有操作,即一个命令,因为我需要提取 100 个输出文件。

grep awk

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

怎么做逆切?

我在这方面还是新手。请问,如何逆切?

例子;

./24feb/frfr
Run Code Online (Sandbox Code Playgroud)

我想在 cut 命令之后,结果将是./feb/frfr.

怎么做?

csh cut

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

仅挂载 sysfs 的特定部分

我想知道是否可以只挂载 sysfs 的一部分以在 chroot 中使用。示例我只需要 /sys/class/gpio 而不需要休息。

mount -t sysfs sys/some/folder /mnt/temp_sys
Run Code Online (Sandbox Code Playgroud)

linux chroot mount sysfs

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

删除带有文本和大括号的多行

我有多个文件,其中包含以下内容:

this is a test1
 {
test 123
test 456
test 789
}

this is a test2
 {
test 123
test 456
test 789
}

this is a test3
 {
test 123
test 456
test 789
}
Run Code Online (Sandbox Code Playgroud)

需要删除一段:

this is a test2
 {
test 123
test 456
test 789
}
Run Code Online (Sandbox Code Playgroud)

大括号之间的行可能不同(更少或更多行)我尝试过类似的方法:

sed -i 's|This is a test2 *.* !}||g' *
Run Code Online (Sandbox Code Playgroud)

sed -i 's|This is a test2, !}||g' *
Run Code Online (Sandbox Code Playgroud)

但没有成功

sed awk

3
推荐指数
1
解决办法
9545
查看次数

从网站递归下载

我正在尝试从网站 url " www.example.com/products"获取图像,该产品文件夹中有很多子文件夹,我需要下载产品文件夹。

在 www.example.com/products、www.example.com/products/subfolders 中,图片是

  • www.example.com/products/subfolder1/image.jpg,
  • www.example.com/products/subfolder2/image.jpg,
  • www.example.com/products/subfolder3/image.jpg

如何下载包含数据的子文件夹的产品文件夹。

download wget web curl

3
推荐指数
1
解决办法
4349
查看次数

将文件加载到数组中,使用数组中的数据处理第二个文件

我在 Windows 7 上的 cygwin 环境中。我正在使用以下命令运行现有的 awkscript:

awk -f awkscript datafile.txt
Run Code Online (Sandbox Code Playgroud)

awkscript 读取和处理 datafile.txt 中的数据,datafile.txt 中的字段之一是代码。

例子: f1|f2|f3|f4

...其中 f2 值是一个代码

我可以将代码及其在 awkscript 中的描述硬编码到函数中的数组中,并在处理时打印出描述,但这对我来说是一种草率的方式。

带有代码和描述的数据示例如下:

111|Description of 111
222|Description of 222
333|Description of 333
Run Code Online (Sandbox Code Playgroud)

...其中 111 是代码,我想打印出“111 的描述”我将调用此文件 code-descr.txt

由于上面带有代码和描述的文件永远不会改变,我想运行 awkscript 并将其读取 code-descr.txt 到一个数组中。

如何将其添加到命令行:awk -f awkscript datafile.txt?如果我不需要向命令行添加任何内容,我如何在运行时始终将 code-descr.txt 读入数组:awk -f awkscript datafile.txt

awk text-processing

3
推荐指数
1
解决办法
4051
查看次数

在目录和子目录中查找最大文件的最快方法

我需要在当前和后续目录中找到最大的文件。我试过

ls -Rlh | awk '{print $3 " " $5 " " $9}' 
Run Code Online (Sandbox Code Playgroud)

但不知道是否可以,如何排序和选择最大的文件。

size shell-script sort files

3
推荐指数
1
解决办法
3059
查看次数

标签 统计

awk ×4

linux ×2

c ×1

chroot ×1

csh ×1

curl ×1

cut ×1

diff ×1

download ×1

file-comparison ×1

files ×1

grep ×1

mount ×1

ping ×1

sed ×1

shell-script ×1

size ×1

sort ×1

sysfs ×1

text-processing ×1

web ×1

wget ×1