Ano*_*ony 15 command-line text-processing cut-command
是否有任何剪切命令可以根据单词进行剪切,例如:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD. The task has terminated abnormally because of a program check. 16:08:27
Run Code Online (Sandbox Code Playgroud)
我希望输出为:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Run Code Online (Sandbox Code Playgroud)
如何接近?
Cyr*_*rus 22
我建议:
awk -F 'ABCD' '{print $1 FS "."}' file
Run Code Online (Sandbox Code Playgroud)
输出:
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD。
FS包含您的分隔符“ABCD”。“ABCD”是一个正则表达式。
awk如果您提供-F带有要使用的单词的标志,则可以完成这项工作:
$ awk -F 'test' '{print $1;print $2}' <<< "onetesttwotest"
one
two
Run Code Online (Sandbox Code Playgroud)
在您的特定情况下,那将是:
$ awk -F 'ABCD' '{print $1,FS}' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD
Run Code Online (Sandbox Code Playgroud)
从您的示例来看,您只是尝试打印内容,ABCD因此删除之后的所有内容也是一种选择:
$ awk '{print substr($0,0,match($0,/ABCD/)+4);}' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Run Code Online (Sandbox Code Playgroud)
小智 5
sed 版本:
sed 's/ABCD.*/ABCD./' input.txt
171212 16082784 6264 XXX xxxxxxxx Transaction XXXXX abend ABCD.
Run Code Online (Sandbox Code Playgroud)
来源:https : //unix.stackexchange.com/questions/257514/how-to-delete-everything-after-a-certain-pattern-or-a-string-in-a-file