我有一个文本文件与数百个'FirstName LastName电子邮件‘在一个字符串。我需要将字符串分割成一行1组。
FirstName LastName Email
FirstName LastName Email
FirstName LastName Email等
我正在努力从文件中删除前3个单词后,我将它们导入一个新的文件,这样当脚本循环时,它将读取下一个3,管道,删除等。
awk '{print $1, $2, $3}' asd >> asd2 | cut -d' ' -f1-3 asd我知道剪切是不对的,但老实说,我无法找到删除前三个单词的方法,我只是找到了删除整行的“sed”。
发布于 2015-02-03 02:34:04
这里不需要使用|符号。
awk '{print $1, $2, $3}' asd >> asd2; sed -i 's/^ *[^ ]\+ \+[^ ]\+ \+[^ ]\+//' asd您可以在上面的命令中添加[^[:blank:]]而不是[^ ]。将正则表达式更改为's/^ *[^ ]\+ \+[^ ]\+ \+[^ ]\+ *//',以删除第三个单词之后存在的空格。
发布于 2015-02-03 03:17:50
用xargs..。
$ cat asd
FirstName1 LastName1 Email1 FirstName2 LastName2 Email2 FirstName3 LastName3 Email3 ...
$ xargs -n3 < asd
FirstName1 LastName1 Email1
FirstName2 LastName2 Email2
FirstName3 LastName3 Email3
...xargs语法:
xargs -nN [command=echo [args]]-n3意味着每次运行带有3个参数的命令。echo。发布于 2015-02-03 07:48:49
这个awk应该一蹴而就:
awk -vRS=" " '{ORS=NR%3?RS:"\n"}1' asd
FirstName LastName Email
FirstName LastName Email
FirstName LastName Email通过将RS设置为一个空白,一个记录就是一个单词。
然后将ORS设置为三个字后的一个空格或新行。
可以将其中一些缩短为:
awk -vRS=" " 'ORS=NR%3?RS:"\n"' asdhttps://stackoverflow.com/questions/28290323
复制相似问题