我有一个CSV文件的负载,但他们不干净。他们用“|”作为一个分离器。某些文件的尾部有“|”,这意味着在第1行中有N列,并且在第2+行中有N+1。我想循环遍历这些文件,并删除包含尾随分隔符的行。使用shell和awk或类似工具对单个文件执行此操作的最佳方法是什么?输入csv:
|some|data|here |some|more|data| |even|more|data|
输出量:
|some|data|here |some|more|data |even|more|data
qyyhg6bp1#
使用sed就地更换:
sed
sed -i 's/|$//' test.txt
|$
$
|
jtjikinw2#
使用您显示的示例,请尝试以下awk代码。
awk
awk '/\|$/{ $0=substr($0,1,length($0)-1) } 1 ' Input_file
yduiuuwa3#
看看这个:
perl -pe 's/\|$//' test.txt
输出
2exbekwf4#
echo ' |some|data|here |some|more|data| |even|more|data|' |
gawk \/\/ RS='[|]?\r?\n' # precisely trim off 1 trailing pipe mawk $$ RS='[\r|]*\n' # trim off any amount of it nawk NF=1 FS='[|]$' # via column splitter FS instead of row-splitter RS
4条答案
按热度按时间qyyhg6bp1#
使用
sed
就地更换:|$
-匹配$
行末尾的|
jtjikinw2#
使用您显示的示例,请尝试以下
awk
代码。yduiuuwa3#
看看这个:
输出
2exbekwf4#