2つの単語間のカンマ(、)を削除するには?
どのようにこれらの2つの単語を2つの異なる行に入れることができますか?
これは私の入力です。
ent0
ent4
ent1,ent5
ent2,ent6
ent3,ent7
ent29,ent30
答え1
tr ',' '\n'
入力ファイルのすべてのsを改行文字に置き換えます。,
これは必要に応じて聞こえます。
答え2
使用tr
:
$ tr ',' '\n' < FILE
ent0
ent4
ent1
ent5
ent2
ent6
ent3
ent7
ent29
ent30
答え3
使用bash
:
#!/bin/bash
while IFS='' read -r line; do
echo "${line//,/$'\n'}";
done <infile.txt
またはsed
sed -e $'s/,/\\\n/g' infile.txt
または
sed 's/,/\
/g' infile.txt
答え4
cut
次のように使用できます。
あなたのデータがどこから来るのかわかりません。しかし、次のアドレスにあなたの情報を送ることができると確信していますcut
。
cat yourfile.data | cut -d, --output-delimiter ' ' -f 1,2
~によると man cut
...
-d, --delimiter=DELIM
use DELIM instead of TAB for field delimiter
--output-delimiter=STRING
use STRING as the output delimiter the default is to use the input delimiter
-f, --fields=LIST
select only these fields; also print any line that contains no delimiter character, unless the -s option is specified
...
ただし、追加のロジックを追加する必要がある場合は、sed
@RomanPerekhrestが言った内容を使用することをお勧めします。強力な正規表現を使用すると、データをより柔軟に解析できます。私の考えでは、これを行うための最良の正規表現は次のとおりです。
'/^\s*\([^,]\+\)\s*,\s*([^,]\+\)\s*$/'
〜0個以上のスペースの後にカンマを除くすべてのエントリ、0個以上のスペース、カンマ、0個以上のスペースの後にカンマを除くすべてのエントリ、0個以上のスペースが続きます。