从具有1到多行的文件开始,如下所示:
0a090s909afd09f refs/heads/feature/branch-123
0a090s909afd09f refs/heads/branch-124
我想逐行阅读文件并在第二个" /"之后打印到另一个文件的所有内容:
feature/branch-123
branch-124
答案 0 :(得分:0)
如果您对awk
开放:
awk -F'/' '{$1=$2=""}1' inputfile
feature branch-123
branch-124
如果grep
可以接受:
grep -oP '/.*?/\K.*' file
feature/branch-123
branch-124
答案 1 :(得分:0)
使用bash
参数展开
#!/bin/bash
# Reset IFS and parse line not allowing decoding of any backslash escaped
# characters, '-r' flag in 'read' takes care of it
while IFS= read -r line
do
printf "%s\n" "${line#*/*/}"
done<file
或者在一行中,如
while IFS= read -r line; do echo "${line#*/*/}"; done<file
feature/branch-123
branch-124
答案 2 :(得分:0)
使用GNU sed:
sed -E 's/([^/]*\/){2}//' file
答案 3 :(得分:0)
awk -F'heads\/' '{print $2}' file
feature/branch-123
branch-124
答案 4 :(得分:0)
使用sed:
sed 's|^[^/]*/[^/]*/||' your_input_file
(注意,我使用|
作为分隔符,而不是sed中的普通/
,以避免繁琐的转义)
正则表达式应该是微不足道的理解:
^[^/]*/[^/]*/
^ Start of line
[^/]* Any number of non-slash character
/ a slash
[^/]* Any number of non-slash character
/ a slash
上面的字符串被替换为空格,这样就可以了解第二个斜杠之后的内容。