我有像
这样的标题>XX|6226515|new|xx_000000.1| XXXXXXX
在我试图缩短为
的文本文件中>XX6226515
使用awk
。我试过了
awk -F"|" '/>/{$0=">"$1}1' input.txt > output.txt
但它会产生以下内容
>XX|6226515|new|
答案 0 :(得分:4)
awk -F"|" '{print $1$2}' input.txt > output.txt
输出:
>XX6226515
答案 1 :(得分:3)
sed解决方案:
sed -e 's/|//' -e 's/|.*//'
第一个替换删除第一个垂直条,第二个替换删除第二个垂直条以及之后的任何内容。
答案 2 :(得分:1)
$ awk -F'|' '$0=$1$2' <<< ">XX|6226515|new|xx_000000.1| XXXXXXX"
>XX6226515
答案 3 :(得分:1)
这个cut
也可以成功:
cut -d"|" --output-delimiter="" -f-2
见输出:
$ echo ">XX|6226515|new|xx_000000.1| XXXXXXX" | cut -d"|" --output-delimiter="" -f-2
>XX6226515
-d"|"
将|
设置为字段分隔符。--output-delimiter=""
表示输出分隔符必须为空。-f-2
表示必须打印所有记录,直至第二个(含)。仅使用bash
:
while IFS="|" read a b _
do
echo "$a$b"
done <<< ">XX|6226515|new|xx_000000.1| XXXXXXX"
见输出:
$ while IFS="|" read a b _; do echo "$a$b"; done <<< ">XX|6226515|new|xx_000000.1| XXXXXXX"
>XX6226515