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