我有一个类似的文件:
09/03/2018 t38940 "https:/dsdsadasdsa.dsadsa.dsadsa
09/03/2018 x38940 "https:/dsadas.dsad.dsa
09/03/2018 d38940 "https:/dasdsa.dsadas.dsadsa
09/03/2018 (38940 "https:/dsadas.dsadasd.dsa
09/03/2015 )38940 "https:/dsds.dasdas.d
我想得到结果:
09/03/2018 38940 "https:/dsdsadasdsa.dsadsa.dsadsa
09/03/2018 38940 "https:/dsadas.dsad.dsa
09/03/2018 38940 "https:/dasdsa.dsadas.dsadsa
09/03/2018 38940 "https:/dsadas.dsadasd.dsa
09/03/2015 38940 "https:/dsds.dasdas.d
我想删除开头第二列的数字和字符(始终仅是一个字符)。
我如何编写sed命令来获取该信息?
答案 0 :(得分:2)
此sed单行适用于您的示例:
sed 's/ ./ /' file
答案 1 :(得分:1)
使用awk会更容易:
awk '{$2=substr($2,2)}1' file
此脚本删除每行第二个元素的第一个字符。
答案 2 :(得分:0)
请您尝试以下。
awk '{gsub(/^\)|^\(/,"",$2)} 1' Input_file
答案 3 :(得分:0)
我假设您的列始终由单个空格分隔。
捕获第一列\([^ ]* \)
(零个或多个非空格字符,后跟一个空格),并忽略下一个字符.
(不包括在替换字符中):>
sed 's/\([^ ]* \)./\1/' file
通常,要对第N列执行此操作,然后捕获N-1个重复,例如:
sed 's/\(\([^ ]* \)\{2\}\)./\1/' file
将删除第三列的第一个字符。
使用-E
来使用()
和{}
而不使用反斜杠:
sed -E 's/(([^ ]* ){2})./\1/' file
答案 4 :(得分:0)
使用GNU {Timestamp, kvp1, kvp2, kvpN}
,假设您总是想删除第12个字符:
cut
或与任何符合POSIX的cut -c 12 --complement infile
:
cut