有一个巨大的文件,其中的列由|~|分隔符分隔。如何使用shell命令提取所需的列数?比如文件看起来像:
column1|~|column2|~|column3|~|column4|~|column5|~|column6|~|column7
我们想提取第4列和第5列
awk -F "(|~|)" '{ print $4,$5 }' file
将字段分隔符设置为"|~|"使用-F,然后打印第4和第5个字段($4,$5)
在普通bash
:
#!/bin/bash
while IFS= read -r line; do
readarray -t fields <<< "${line//'|~|'/$'n'}"
printf '%s %sn' "${fields[3]}" "${fields[4]}"
done < file
或,带awk
awk -F '\|~\|' '{ print $4, $5 }' file
或者GNUsed
:
sed -E 's/|~|/n/g; s/([^n]*n){3}(([^n]*n){2}).*/2/; s/n/ /g' file