我需要启动一些东西来验证文件。
用逗号分隔两个字段的文本,
在第二个字段中,我们可能会找到/*/*/*
这是我想要的数据。
我想仅丢弃/*/*
输入文件
\\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
答案 0 :(得分:2)
如果您想在逗号后加上三个或更多斜杠,
grep ',/.*/.*/' file
答案 1 :(得分:1)
如果您尝试在单/
之后打印包含超过3 ,
的所有行,您可以这样做:
sed -n '\@,.*/.*/.*/@p' input
限制为包含3 /
的那些行:
sed -n '\@,\([^/]*/\)\{3\}[^/]*$@p' input
如果您必须将搜索限制在第二个字段(例如,可能有超过1个逗号):
awk '$2 ~ /[/].*[/].*[/]/' FS=, input
或
awk -F, '$2 ~ /\/.*\/.*\//' input
答案 2 :(得分:1)
如果你想保留逗号之后有3个或更多斜杠的条目,删除两个或更少的那些行,那么我会使用:
sed -n '/[^,]*,\/[^/]*\/[^/]*\//p'
-n
会抑制正常打印。该模式查找斜杠后跟非斜杠,另一个斜杠,更多非斜杠和另一个斜杠并打印它。如果您必须在第三个斜杠后面加上一个字符,请在正则表达式中的第三个[^/]
之后添加\/
。
答案 3 :(得分:1)
只有两个字段,可以使用grep轻松完成:只保留逗号后面有三个/
个字符的行。
grep ',/.*/.*/'
使用更多字段,而grep或sed可以工作,使用awk更容易。
awk -F , '$2 ~ /(\/.*){3}/ {print}'