我有以下输入内容:
line="before,myinput1,after"
myinput1
也可以是第一个或最后一个。例如:line="myinput1,after"
或line="before,myinput1"
我正在尝试仅获取myinput1值(可以更改)。尝试过这个:
line | grep -o -E ',.{0,7}.,'
,其返回以下值:,myinput1,
。如果值是第一个或最后一个,则该问题将不起作用,因为缺少,
。
还有其他方法吗?
答案 0 :(得分:0)
要在逗号分隔的字符串中捕获8个字符的字段,可以使用awk
:
awk -v RS=, 'length()==8' <<< "$line"
RS
将记录分隔符设置为逗号,
。
awk length()
函数给出当前记录的大小。
答案 1 :(得分:0)
使用grep,用于8个字符的正则表达式(假设您只需要8个字符串)为\w{8}
。使用OR运算符|
,可以将所需的三种情况(行首,行尾和行中某处)表示为:
egrep -o ',\w{8},|^\w{8},|,\w{8}$'
答案 2 :(得分:0)
使用bash:
(IFS=',';set -- $line;for i;do [ ${#i} -eq 8 ] && echo $i ;done)