表題の件にて、質問です。
bashでshを作成しています。いろいろ試しているのですが、
UNIXのコマンドで、uniqコマンドがありますが、それと同じことをsed又は、awk等を使用して、作成することは可能でしょうか?
作成が可能であれば、記述方法を教えてくださいませ。
※ループ文を使用しないで、出来るだけ完結なコマンド文にしたい。
例:
file.txt 以下中身
----------------------
AAAA
BBBB
BBBB
CCCC
CCCC
-----------------------
↓
AAAA
BBBB
CCCC
の3文字のみを出力したい。
ご存知の方いらっしゃいましたら、ご教示ください。
A 回答 (5件)
- 最新から表示
- 回答順に表示
No.5
- 回答日時:
複数ファイルには対応してないけどこんなのとか。
awk 'NR==1||prev!=$0;{prev=$0}' sample.txt
よっぽどひねたawkでなければこれでいけると思います。
まあスクリプトをファイルに収めれば問題ありませんが。
にしても、bashがあるのにuniqがないってのはなんという環境なんでしょうか。
No.4
- 回答日時:
sed や awk はあるけど uniq のない環境って想定できないなぁ.... どんな「UNIX」なんでしょうか?
原典には当たってないけど, uniq は POSIX で規定されたコマンドなので「UNIX」を名乗るなら uniq はあるはず.
No.3
- 回答日時:
No.2
- 回答日時:
お察しのとおり、awkで簡単に片付きますけど
#ぶっちゃけbashのみでできると思う。
・なぜuniq をつかったらダメなのか
#uniqが使えなくてsed/awkが使えるという前提が良くわからない
・ループ文を使わずに簡潔にと言う制限事項はなんのためにあるのか
あたりを明確にしていただかないとスクリプトを書くわけにはいきませんね。
まあ誰かが書きそうだけど。
この回答への補足
ありがとうございます。
以下 補足いたします。
・なぜuniq をつかったらダメなのか
uniqのコマンドが存在しないからです。
・ループ文を使わずに簡潔にと言う制限事項はなんのためにあるのか
多重ループになるのは、見た目あまりよろしくないと思いました。
制約はありません。
一行でまとめられるなら、きれいにまとめたい為です。
No.1
- 回答日時:
awk は使ってないから知らんけどできるはず.
sed でも N とか s/\(.*\)\n\1/\1/ とか t とかを駆使してループを書けば可能.
とはいうけど, 正直 uniq 使えばいいじゃん.
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- UNIX・Linux Linuxについて質問です。 以下のhistoryの出力結果から、sedコマンドのファイル名tmp1 1 2023/02/03 20:11
- その他(プログラミング・Web制作) Linuxについて質問です。 引数に指定されたアクセスログのファイルからアクセス数が多い順に上位3つ 1 2023/02/03 03:46
- バックアップ linuxのバックアップ 2 2022/04/27 13:38
- その他(コンピューター・テクノロジー) Power Shellコマンドで作成日時を一括シフトする方法 3 2022/10/21 12:37
- UNIX・Linux bashでブランク(空白)を検索文字列として指定する方法 1 2022/04/13 22:29
- Word(ワード) Wordの目次作成についてです。 卒業論文で目次を作ることになりました。 本文は「見出し」の機能を使 1 2023/01/17 11:26
- CAD・DTP 「機能ブロック図」の描画用フリーソフトを教えてください 1 2022/09/23 16:12
- Visual Basic(VBA) 特定の文字を簡単な操作で半角スペースに変換するか削除したい 2 2022/11/01 10:35
- C言語・C++・C# プログラミングの問題です。至急教えてください。 /***から***/の部分をプログラミングにしてほし 1 2022/10/13 11:48
- 画像編集・動画編集・音楽編集 inkscapeで作成した図の保存の仕方とその保存したファイルの編集の仕方 1 2022/09/22 09:33
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
バッチ終了時にDOS窓を閉じるコ...
-
バッチファイル 文字列にスペ...
-
コマンドプロンプトをクリック...
-
ショートカットをデスクトップ...
-
make test って何をするための...
-
バッチファイルでディスク容量...
-
AccessVBAで実行時間を指定する...
-
バッチコマンドのIF文(条件...
-
SSH接続でwindowsサーバのコマ...
-
ftpコマンドを実行すると「425 ...
-
Windowsのバッチ(bat)ファイル...
-
コマンドプロンプトでファイル...
-
コードからアクセス権限の変更
-
FTPの連続実行でフリーズする
-
findstrでヒットした1行前の文...
-
コンピュータ名をファイル名に...
-
シェルの「:コマンドが見つか...
-
コマンドプロンプトで、特定の...
-
if [ 条件式 ]とif[[ 条件式 ]]
-
DOSコマンドで指定日数よりも過...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
バッチファイル 文字列にスペ...
-
バッチ終了時にDOS窓を閉じるコ...
-
コマンドプロンプトをクリック...
-
make test って何をするための...
-
ftpコマンドを実行すると「425 ...
-
ショートカットをデスクトップ...
-
コマンドプロンプトで、特定の...
-
バッチファイルを使ってテキス...
-
シェルの「:コマンドが見つか...
-
findstrでヒットした1行前の文...
-
コンピュータ名をファイル名に...
-
AccessVBAで実行時間を指定する...
-
コマンドプロンプトでファイル...
-
2つ目の「pause」は無効?
-
コマンドプロンプトのバッチで...
-
バッチファイルでdiskpart.exe...
-
ftpコマンド出力結果の取得
-
コマンドプロンプトのERRORLEVE...
-
バッチコマンドのIF文(条件...
-
コマンドプロンプト
おすすめ情報