Linux 将删除的字段移到换行符中
我有一个逗号分隔的txt文件,它必须只有五列,但有些行的列数超过了5列。Linux 将删除的字段移到换行符中,linux,shell,unix,awk,Linux,Shell,Unix,Awk,我有一个逗号分隔的txt文件,它必须只有五列,但有些行的列数超过了5列。 我想把第6到第10行移到新行,把第11到第15行移到新行,依此类推 下面是input.txt 1,2,3,4,5 12,13,14,15,16,11,17,18,19,20 22,23,24,25,26,22,27,28,29,21,30,31,32,33,34 1,2,3,4,5 12,13,14,15,16 11,17,18,19,20 22,23,24,25,26 22,27,28,29,21 30,31,32,3
我想把第6到第10行移到新行,把第11到第15行移到新行,依此类推
下面是
input.txt
1,2,3,4,5
12,13,14,15,16,11,17,18,19,20
22,23,24,25,26,22,27,28,29,21,30,31,32,33,34
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
下面是Output.txt
1,2,3,4,5
12,13,14,15,16,11,17,18,19,20
22,23,24,25,26,22,27,28,29,21,30,31,32,33,34
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
我正试着用awk来完成这个,但是运气不好。我想要上面的输出。这个怎么样
sed 's/,/ /g' file|xargs -n5 |sed 's/ /,/g'
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
解释。
1) sed命令:sed's/,//g'
和sed's/,/g'
用于替换字符
2) xargs-n5:
-n max-args, --max-args=max-args
Use at most max-args arguments per command line. Fewer than max-args arguments will be
used if the size (see the -s option) is exceeded, unless the -x option is given, in
which case xargs will exit.
这个怎么样
sed 's/,/ /g' file|xargs -n5 |sed 's/ /,/g'
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
解释。
1) sed命令:sed's/,//g'
和sed's/,/g'
用于替换字符
2) xargs-n5:
-n max-args, --max-args=max-args
Use at most max-args arguments per command line. Fewer than max-args arguments will be
used if the size (see the -s option) is exceeded, unless the -x option is given, in
which case xargs will exit.
这个怎么样
sed 's/,/ /g' file|xargs -n5 |sed 's/ /,/g'
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
解释。
1) sed命令:sed's/,//g'
和sed's/,/g'
用于替换字符
2) xargs-n5:
-n max-args, --max-args=max-args
Use at most max-args arguments per command line. Fewer than max-args arguments will be
used if the size (see the -s option) is exceeded, unless the -x option is given, in
which case xargs will exit.
这个怎么样
sed 's/,/ /g' file|xargs -n5 |sed 's/ /,/g'
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
解释。
1) sed命令:sed's/,//g'
和sed's/,/g'
用于替换字符
2) xargs-n5:
-n max-args, --max-args=max-args
Use at most max-args arguments per command line. Fewer than max-args arguments will be
used if the size (see the -s option) is exceeded, unless the -x option is given, in
which case xargs will exit.
您可以使用
grep
:
grep -oP '([^,]+,){4}[^,]+' inputfile
或
或
对于您的输入,它将产生:
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
您可以使用
grep
:
grep -oP '([^,]+,){4}[^,]+' inputfile
或
或
对于您的输入,它将产生:
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
您可以使用
grep
:
grep -oP '([^,]+,){4}[^,]+' inputfile
或
或
对于您的输入,它将产生:
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
您可以使用
grep
:
grep -oP '([^,]+,){4}[^,]+' inputfile
或
或
对于您的输入,它将产生:
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
使用awk
awk -F, '{for (i=1;i<=NF;i++) printf "%s"(i%5==0?RS:FS),$i}' file
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
awk-F'{for(i=1;i使用awk
awk -F, '{for (i=1;i<=NF;i++) printf "%s"(i%5==0?RS:FS),$i}' file
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
awk-F'{for(i=1;i使用awk
awk -F, '{for (i=1;i<=NF;i++) printf "%s"(i%5==0?RS:FS),$i}' file
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
awk-F'{for(i=1;i使用awk
awk -F, '{for (i=1;i<=NF;i++) printf "%s"(i%5==0?RS:FS),$i}' file
1,2,3,4,5
12,13,14,15,16
11,17,18,19,20
22,23,24,25,26
22,27,28,29,21
30,31,32,33,34
awk-F'{for(i=1;i假设您总共有5个模元素,并且您希望完全填充每一行,您也可以像这样使用tr
和paste
:
<file tr , \\n | paste -d, - - - - -
假设您总共有5个模元素,并且您希望完全填充每一行,您也可以像这样使用tr
和paste
:
<file tr , \\n | paste -d, - - - - -
假设您总共有5个模元素,并且您希望完全填充每一行,您也可以像这样使用tr
和paste
:
<file tr , \\n | paste -d, - - - - -
假设您总共有5个模元素,并且您希望完全填充每一行,您也可以像这样使用tr
和paste
:
<file tr , \\n | paste -d, - - - - -
@jonte,你能解释一下这个部分吗?printf“%s”(i%5==0?RS:FS),$i
printf
使用这个格式:%s”
选择模式0,5,10,15..
中的值$i
i%5==0
如果是,则使用RS
=新行,如果不使用FS
=逗号。它只是一个如果那么否则测试。init输入文件在行中有空格,在示例中只有两行。但现在它已被转换为ch愤怒,不确定,如果您更改了它,或者OP进行了更新。如果行中有空格,您的代码将失败。@BMV查看编辑历史记录,然后单击第一篇文章的“编辑”,查看OP是如何尝试格式化它的,在那里您可以看到三行原始行。@BMW您看得不正确。初始版本有三行,而不是两行。您需要单击“编辑”按钮,而不是编辑按钮。请尝试此链接:@jonte,请您解释一下这部分printf“%s”(i%5==0?RS:FS),$i
printf
使用此格式:%s”
选择模式0,5,10,15..
中的值$i
i%5==0
如果是,则使用RS
=新行,如果不使用FS
=逗号。它只是一个如果那么否则测试。init输入文件在行中有空格,在示例中只有两行。但现在它已被转换为ch愤怒,不确定,如果您更改了它,或者OP进行了更新。如果行中有空格,您的代码将失败。@BMV查看编辑历史记录,然后单击第一篇文章的“编辑”,查看OP是如何尝试格式化它的,在那里您可以看到三行原始行。@BMW您看得不正确。初始版本有三行,而不是两行。您需要单击“编辑”按钮,而不是编辑按钮。请尝试此链接:@jonte,请您解释一下这部分printf“%s”(i%5==0?RS:FS),$i
printf
使用此格式:%s”
选择模式0,5,10,15..
中的值$i
i%5==0
如果是,则使用RS
=新行,如果不使用FS
=逗号。它只是一个如果那么否则测试。init输入文件在行中有空格,在示例中只有两行。但现在它已被转换为ch愤怒,不确定,如果您更改了它,或者OP进行了更新。如果行中有空格,您的代码将失败。@BMV查看编辑历史记录,然后单击第一篇文章的“编辑”,查看OP是如何尝试格式化它的,在那里您可以看到三行原始行。@BMW您看得不正确。初始版本有三行,而不是两行。您需要单击“编辑”按钮,而不是编辑按钮。请尝试此链接:@jonte,请您解释一下这部分printf“%s”(i%5==0?RS:FS),$i
printf
使用此格式:%s”
选择模式0,5,10,15..
中的值$i
i%5==0
如果是,则使用RS
=新行,如果不使用FS
=逗号。它只是一个如果那么否则测试。init输入文件在行中有空格,在示例中只有两行。但现在它已被转换为ch愤怒,不确定,如果您更改了它,或者OP进行了更新。如果行中有空格,您的代码将失败。@BMV查看编辑历史记录,然后单击第一篇文章的“编辑”,查看OP是如何尝试格式化它的,在那里您可以看到三行原始行。@BMW您看得不正确。初始版本有三行,而不是两行。您需要单击“编辑”th按钮