我有以下文件:
123 | xyz | abc | abc | abc | 567
321 | xyz | abc | abc | abc | 765
我编写了这个脚本来捕获first | last
列:
#!/bin/bash
line=$(cat input.txt | sed 's/ //g')
args=(${line//|/ })
x="${args[0]}"
y="${args[11]}"
echo $x
echo $y
结果是:
123
765
如何获得以下结果:
123 | 567
321 | 765
由于
答案 0 :(得分:3)
您可以使用sed
sed 's/|.*|/|/' input.txt
答案 1 :(得分:3)
我可以通过cut
$ cut -f1,6 -d"|" input.txt
123 | 567
321 | 765
答案 2 :(得分:1)
您可以使用awk:
awk -F '[| ]+' '{print $1, $NF}' OFS=' | ' file
123 | 567
321 | 765
在纯BASH中执行此操作:
while IFS=' | ' read -a arr
echo "${arr[0]} | ${arr[@]:(-1)}"
done < file
123 | 567
321 | 765
答案 3 :(得分:1)
以下是bash中的一种方法:
$ cat file
123 | xyz | abc | abc | abc | 567
321 | xyz | abc | abc | abc | 765
$ while IFS="|" read -ra line; do
echo "${line[0]}|${line[${#line[@]}-1]}"
done < file
123 | 567
321 | 765