我需要启动某些程序来验证文件。
用逗号在两个字段中分隔的文本,
在第二个字段中,我们可能会找到/*/*/*,这是我想要的数据。
我只想丢弃/*/*
输入文件

\\CIFSERVER1\Share1,/fs1_casa/c/share1
\\CIFSERVER1\Share2,/fs2_casa/c/share2
\\CIFSERVER1\Share3,/fs1_casa/c/share3
\\EDULIN\edu,/edu1
\\CIFSERVER2\root,/fs1_casa
\\CIFSERVER2\root,/fs2_casa
\\CIFSERVER2\root,/fs3_casa
\\CIFSERVER2\root,/fs1_casa

输出应为:
\\CIFSERVER1\Share1,/fs1_casa/c/share1
\\CIFSERVER1\Share2,/fs2_casa/c/share2
\\CIFSERVER1\Share3,/fs1_casa/c/share3

应该删除什么?
\\EDULIN\edu,/edu1
\\CIFSERVER2\root,/fs1_casa
\\CIFSERVER2\root,/fs2_casa
\\CIFSERVER2\root,/fs3_casa
\\CIFSERVER2\root,/fs1_casa

最佳答案

如果您尝试在单个/之后打印包含超过3个,的所有行,则可以执行以下操作:

sed -n '\@,.*/.*/.*/@p' input

限制为仅包含3个/的行:
sed -n '\@,\([^/]*/\)\{3\}[^/]*$@p' input

如果您必须将搜索限制在第二个字段(例如,可能有多个逗号):
awk '$2 ~ /[/].*[/].*[/]/' FS=, input

要么
awk -F, '$2 ~ /\/.*\/.*\//'  input

09-04 01:29