我有一个in.csv只有一列的文件以这种方式:
Sample
a_b_c
d_e_f
g_h_i
Run Code Online (Sandbox Code Playgroud)
我想将字段分隔符从 to 更改_为,并打印单独的字段,但将输入列保持在输出文件的第一列中。我想awk原则上使用。
这是我到目前为止:
awk 'BEGIN {FS="_";OFS=","} {$1=$1}1' in.csv > out.csv
Run Code Online (Sandbox Code Playgroud)
这给了我这个
Sample
a,b,c
d,e,f
g,h,i
Run Code Online (Sandbox Code Playgroud)
我怎样才能像这样输出它,保留原始列(重命名ID)?
ID,group1,group2,group3
a_b_c,a,b,c
d_e_f,d,e,f
g_h_i,g,h,i
Run Code Online (Sandbox Code Playgroud)
请注意,输入的字段数是可变的,输入Sample行可能是其他名称,或者为空,甚至不存在,但我仍然希望这样的输出......
编辑
检查所有答案后,我必须在这里澄清上面的输入文件只是一个例子......我的真实文件通常有超过3个字段_(但我事先不知道有多少)和无数行分隔,但是我将尝试确保给定文件中的所有行在要“拆分”的字段数上保持一致。
当我的文件每行要拆分的字段多于或少于 3 个时,下面的答案似乎不起作用,如果可能的话,我需要一个更通用的单行。
目前,为了简单起见,我宁愿不对标题行做任何事情并保持原样。
这意味着对于另一个示例:
Some_header
a_b_c_1
d_e_f_2
g_h_i_3
Run Code Online (Sandbox Code Playgroud)
我想获得这个:
Some_header
a_b_c_1,a,b,c,1
d_e_f_2,d,e,f,2
g_h_i_3,g,h,i,3
Run Code Online (Sandbox Code Playgroud)
最佳情况下,单行应该处理存在字段不一致的行的情况,因此从这样的文件中:
Some_header
a_b_c
d_e_f_2
g_h_i_3_4
Run Code Online (Sandbox Code Playgroud)
我想获得这个:
Some_header
a_b_c,a,b,c
d_e_f_2,d,e,f,2
g_h_i_3_4,g,h,i,3,4
Run Code Online (Sandbox Code Playgroud)
有没有办法用_in 变量记录行,然后将变量拆分为_,然后打印变量及其所有组件,并由 分隔,?对不起,我认为这会更容易……也许单线会更容易Perl?对不起,对单线不够精通……再次感谢!
您能否尝试仅对显示的样本进行以下、编写和测试。这应该适用于在https://ideone.com/fWgggq 中测试过的任意数量的字段
awk '
BEGIN{
FS="_"
OFS=","
print "ID,group1,group2,group3"
}
FNR>1{
val=$0
$1=$1
print val,$0
}' Input_file
Run Code Online (Sandbox Code Playgroud)
说明:为以上添加详细说明。
awk ' ##Starting awk program from here.
BEGIN{ ##Starting BEGIN section of program from here.
FS="_" ##Setting field separator as _ here,
OFS="," ##Setting OFS as comma here.
print "ID,group1,group2,group3" ##Printing header as per OP requirement here.
}
FNR>1{ ##Checking condition if this is greater than 1st line then do following.
val=$0 ##Store current line into var val here.
$1=$1 ##reassign first field to itself so that new OFS which is , is implemented to whole line.
print val,$0 ##Printing current new line here.
}' Input_file ##Mentioning Input_file name here.
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
240 次 |
| 最近记录: |