![从管道分隔文件中检索字段行](https://linux22.com/image/141878/%E4%BB%8E%E7%AE%A1%E9%81%93%E5%88%86%E9%9A%94%E6%96%87%E4%BB%B6%E4%B8%AD%E6%A3%80%E7%B4%A2%E5%AD%97%E6%AE%B5%E8%A1%8C.png)
我需要从管道分隔文件中获取前 9 个单词,然后获取接下来的 9 个单词。
cat a.txt
a|b|c|d|e|f|g|h|i|j|k|l|m|n|o|p|q|r|s|t|u|v|w|x|y|z|
猫新.ksh
#! /bin/ksh
a=`awk -F "|" ' { print NF-1 } ' a.txt`
echo $a
预期输出:
grep -i "a|b|c|d|e|f|g|h|i" b.txt >> c.txt
grep -i "j|k|l|m|n|o|p|q|r" b.txt >> c.txt
grep -i "s|t|u|v|w|x|y|z" b.txt >> c.txt
答案1
与 sed
sed -E 's/(([^|]+\|){1,9})/\1\n/g' a.txt
或 perl
perl -F'\|' -lanE 'while (@F) {say join("|", splice @F, 0, 9), "|"}' a.txt
答案2
怎么样
$ tr '|' $'\n' < file | paste -sd'||||||||\n'
a|b|c|d|e|f|g|h|i
j|k|l|m|n|o|p|q|r
s|t|u|v|w|x|y|z|