Bash脚本:解析用逗号分隔的字符串
问题描述:
我有一个文件,其中有很多单词,每行一个。我还有第二个文件,所有文字都用逗号分隔。我想要做的是访问由逗号分隔的每个单词。一旦我有每个词,我想删除第一个文件中的文件的单词。Bash脚本:解析用逗号分隔的字符串
我无法访问分隔文件中的每个单词。
感谢您的帮助!
答
如何:
#!/bin/bash
# split_comma
OIFS=$IFS
IFS=','
for w in $(cat $1)
do
# Do stuff with each word
echo $w
done
IFS=$OIFS
$ ./split_comma test_file
其中test_file
包含this,is,a,test
回报:
this
is
a
test
然后,你可以很容易地使用grep
筛选出来的话较大,线分隔文件。
答
尝试这样做:
grep -w -v -f <(tr ',' '\n' < 2nd_file) 1st_file
答
您可以尝试这样的事:
sed -e 's/,/\n/g' fileWithCommas > tempfile
grep -v -f tempfile wordfile > newfile && mv newfile wordfile
rm tempfile
小问题(有人曾经指出我):如果'IFS'是*未设置*最初,之后它被设置为空字符串。用'$ {IFS-:} OIFS = $ IFS'和'$ {OIFS-:} IFS = $ OIFS'修复。 – chepner 2013-03-21 19:52:42